代码之家  ›  专栏  ›  技术社区  ›  Volatil3

GIT:如何从主文件中删除文件并放入其他分支?

git
  •  1
  • Volatil3  · 技术社区  · 9 年前

    我无意中添加并提交了文件 master 而不是 mybranch 树枝现在连我都切换到 我的分支 我做不到 git status 。如何使该文件再次显示以进行添加/提交和重新加载 我的分支 ?

    3 回复  |  直到 9 年前
        1
  •  1
  •   blashser    9 年前

    您可以在 mybranch

    首先,修复 master 树枝

    git checkout master
    git branch tmp   // This creates a branch in the "wrong" commit
    git reset --hard HEAD~1
    

    你移动你的 主人 分支一提交回。您仍然有一个指向提交的时间分支。

    现在,将提交移到 我的分支 树枝

    git checkout tmp
    git rebase --onto mybranch master tmp
    git checkout mybranch
    git merge tmp
    git branch -d tmp
    

    rebase命令:

    • 起点:--到mybranch
    • 从什么提交:master
    • 提交到什么:tmp

    我建议你打开一些前端,看看你在做什么。我使用 gitk

    gitk --all &
    
        2
  •  0
  •   Community miroxlav    7 年前

    详细答案是 here 。您可以使用 rebase -onto cherry-pick .至于我,我更喜欢 择优挑选 .

        3
  •  0
  •   Uwe Geuder    9 年前

    在主分支中使用 git rm dir1/dir2/file .在正确的分支中使用 git show master:dir1/dir2/file >dir1/dir2/file git add dir1/dir2/file

    如果您在错误提交后更新了主分支,当然不能使用 master git show 命令以取回文件。您可以使用 git reflog 以找到合适的参考。如果碰巧是 HEAD@{2} 命令将是 git show HEAD@{2}:dir1/dir2/file >dir1/dir2/file

    (git将自动识别它是相同的文件内容,因此您不必担心磁盘空间消耗加倍。)