在git rebase之后,如何让foo和bar指向同一个提交?

时间:2017-06-27 22:06:20

标签: git git-rebase

我认为如果分支foo指向提交d89b430d,而bar指向提交554015b4,那么当我们这样做时:

git checkout foo
git rebase bar

并假设它成功没有任何冲突,现在foo将指向新提交,而bar将指向旧提交:554015b4

是否有一种快速方法可以使bar指向foo指向的同一位置?当我们git rebase bar并使用一些旗帜时可以这样做吗?我想知道为什么bar仍指向554015b4,但有任何理由不自动指出foo指向的位置?

顺便说一句,如果bar没有指向小费,那么它不是例外之一,当你git checkout <branch-name>时,你会落在小费上。< / p>

以下是an illustration from Atlassian

在: enter image description here

完成后:

git checkout feature
git rebase master

enter image description here

master未指向提示。

2 个答案:

答案 0 :(得分:0)

git checkout bar
git merge --ff-only foo

答案 1 :(得分:0)

承认您在工作目录中没有任何更改,您确实处于以下3个命令执行相同操作的确切情况:

git rebase foo

git merge foo

git reset --hard foo

当您更改工作目录时,最后一个是危险的,因此请谨慎使用...

  

我想知道为什么bar仍指向554015b4,但有任何理由不自动指向foo所指向的位置?

因为,你必须理解(并且永远不会忘记因为它是主要的git规则之一)git只更新/修改你所在的分支的ref(即你已经检查过),其他人总是完好无损。