在上游分支重新定位后,如何找到分支最初分支的内容?
当我拉origin/master
时,我经常需要重新定义几个相关的分支:
Before rebasing b1:
O1 - O2 - O3 - O4 - O5 - O6 <=master
\
G - H - I <=b1
\
T - U - V <=b2
After rebasing b1:
O1 - O2 - O3 - O4 - O5 - O6 <=master
\ \
G - H - I G' - H' - I' <=b1
\
T - U - V <=b2
重新定位b1
需要很多冲突解决方案。为了避免在重新定位b2
时解决相同的冲突,如何找到最初分支的提交b2
,即I
?
rebase
迫使我重新解决所有原始冲突Branch1
:
$ git checkout b2
$ git rebase # crap!
为了避免这种情况,我想做的是将#{1}} 重新绑定到分支的原始提交,即b2
。我想要应用的提交集是I
,这意味着我想I..b2
使用I
作为rebase
的上游(即使它是&#39}不再是一个分支)。现在我必须指定--onto b1
(否则git会将我的更改应用到I
,这就是我已经拥有的。)
git rebase --onto b1 I
我的问题:如何找到I
?
答案 0 :(得分:5)
你不需要。 Git实际上可以使用reflog来解决这个问题。只需将--fork-point
标记传递给git rebase
,例如git rebase --fork-point b1
。
如果您确实需要手动执行此操作(例如,您使用旧版本的Git),您可以自己查看reflog。 git log -g b1
或git reflog show b1
将显示b1的reflog,您可以使用它来确定rebase之前的最后一次提交。