通过移动分支指针使用 git 向后移动

  • 本文关键字:移动 git 指针 分支 git
  • 更新时间 :
  • 英文 :


让我们考虑这种情况:

                  v devel
o--x--o--o--o--o--o
                 
                 o--o
                    ^ feature

我想将devel分支移动到x并将其替换为新名称:

   v devel        v fork
o--o--o--o--o--o--o
                 
                 o--o
                    ^ feature

从关于SO的其他问题中,我发现git update-refgit rebase可能会有所帮助。但是,我找到的解决方案是:

git branch -m devel fork
git checkout -b devel x   # where x is the commit number `x`

这是一个正确的解决方案吗?

您的解决方案是最简单的方法(在我看来)。

而且,只要您不修改现有提交,如果您将更改推送到远程存储库(可能也被其他人使用),它就不会产生不希望的副作用。

但是,不要在 devel 的新位置提交任何内容。如果你这样做并推动你的更改,那么你会让你的同事感到困惑。

假设您提交分支devel的新位置(这就是您要移动它的原因,对吗?)并推送更改。您的存储库(以及原点)如下所示:

                  v fork
o--o--o--o--o--o--o
                
     o           o--o
     ^ devel        ^ feature

但是你的同事有原始树(develforkfork不存在)。当他们尝试pull git 时,git 会尝试将您的devel合并到 fork(他们的devel)。因为现在两个分支都不是另一个分支的祖先,所以fast-forward是不可能的,合并它们需要创建一个新的提交。这可能不是你(和他们)想要的。

总而言之,向后移动分支通常是一个坏主意。你已经被警告了!

最新更新