我正在阅读Pro Git书,并陷入重新定标的问题。
所以两个分支已经合并。然后这本书说,我们进行合并后,我们仍然可以改变主意,将C4改为C5:
但是我尝试复制重新设置基准,发现进行合并后,如果尝试以下操作,我将无法重新设置基准:
git checkout branch_on_c4
git rebase branch_on_c5
我没有新提交的C4'
,消息是:
首先,倒带头以在其上重放您的作品
应用:添加
使用索引信息来重建基础树
回到修补基础和三路合并
无更改-已应用补丁**
如果我没有首先合并两个分支,那么在C5上重新建立C4不会有问题。但是一旦完成合并,就无法再进行基准调整,那么合并后作者如何使用或作者使用什么命令进行重新基准化?
答案 0 :(得分:3)
tl; dr
合并后如何重新设置基准?
您不需要,这不是书中所说的。如果您不喜欢合并,则将其丢弃,然后重新设置 的基数。
然后这本书说,我们进行合并后,我们仍然可以改变主意以重新定基
不,不是。
...如果在运行[this happens]时不进行合并,而是运行
git rebase teamone/master
...
也就是说,代替合并,而不是之后。
因此,您要么必须运行fetch
并事先确定潜在问题,要么运行正常的合并pull
,将其弄得一团糟然后扔掉,重新开始: / p>
git reset --hard HEAD@{1}
(我倾向于避免使用HEAD~1
语法进行合并,因为我不想考虑哪个父级是哪个父级-“ HEAD的上一个值”的reflog语法更简单IMO)。 / p>
答案 1 :(得分:2)
我假设您在这里参考图45和图46:Git Branching Rebasing
接下来,推动合并后的工作的人决定退回并改组其工作;他们执行git push --force来覆盖服务器上的历史记录。然后,您从该服务器中获取新的提交。
该人最有可能做了一些撤消合并的操作,例如:
git reset --hard HEAD~1
然后可以执行 rebase 和 push --force 。