我认为如果分支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:
完成后:
git checkout feature
git rebase master
master
未指向提示。
答案 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(即你已经检查过),其他人总是完好无损。