[英]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-ref
或git 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.