合并后如何重新设置基础?

时间:2019-09-24 15:21:44

标签: git

我正在阅读Pro Git书,并陷入重新定标的问题。

以下是场景: enter image description here

所以两个分支已经合并。然后这本书说,我们进行合并后,我们仍然可以改变主意,将C4改为C5: enter image description here

但是我尝试复制重新设置基准,发现进行合并后,如果尝试以下操作,我将无法重新设置基准:

  

git checkout branch_on_c4

     

git rebase branch_on_c5

我没有新提交的C4',消息是:

  

首先,倒带头以在其上重放您的作品

     

应用:添加

     

使用索引信息来重建基础树

     

回到修补基础和三路合并

     

无更改-已应用补丁**

如果我没有首先合并两个分支,那么在C5上重新建立C4不会有问题。但是一旦完成合并,就无法再进行基准调整,那么合并后作者如何使用或作者使用什么命令进行重新基准化?

2 个答案:

答案 0 :(得分:3)

tl; dr

  

合并后如何重新设置基准?

您不需要,这不是书中所说的。如果您不喜欢合并,则将其丢弃,然后重新设置 的基数。


  

然后这本书说,我们进行合并后,我们仍然可以改变主意以重新定基

不,不是。

says

  

...如果在运行[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