让我们考虑一下这种情况:
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`
这是正确的解决方案吗?
答案 0 :(得分:1)
您的解决方案是最简单的方法(在我看来)。
并且,只要您不修改现有提交,如果您将更改推送到远程存储库(也可能被其他人使用),它就不会产生不良副作用。
但是,请勿在{{1}}的新位置提交任何内容。如果你这样做并推动你的改变那么你就会混淆你的同事。
假设您提交了分支devel
的新位置(这就是为什么要移动它,对吧?)并推送您的更改。你的回购(以及原产地)看起来像这样:
devel
但是您的同事拥有原始树( v fork
o--o--o--o--o--o--o
\ \
o o--o
^ devel ^ feature
位于devel
且fork
不存在)。当他们尝试fork
时,git会尝试将您的pull
合并到devel
(他们的fork
)。因为现在两个分支都不是另一个分支的祖先,devel
是不可能的,并且合并它们需要创建新的提交。这可能不是你(和他们)想要的。
总而言之,向后移动分支通常是一个坏主意。你被警告了!