繁体   English   中英

通过移动分支指针与git一起返回

[英]Move back with git by moving a branch pointer

让我们考虑这种情况:

                  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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM