在上游分支被重新定位后,如何找到分支最初分支的内容?
当我拉动时,我经常需要改变几个相关的分支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
Run Code Online (Sandbox Code Playgroud)
重新定位b1
需要很多冲突解决方案.为了避免在重新定位时解决相同的冲突b2
,我如何找到b2
最初分支的提交,即I
?
rebase
迫使我重新解决所有原始冲突Branch1
:
$ git checkout b2
$ git rebase # crap!
Run Code Online (Sandbox Code Playgroud)
为了避免这种情况,我想做的是b2
将其重新分支到它分支的原始提交上,即I
.我想申请一组提交的是I..b2
,这意味着我要使用I
作为上游的rebase
(即使它不是一个分支了).现在我必须指定--onto b1
(否则git将应用我的更改I
,这是我已经拥有的).
git rebase --onto b1 I
Run Code Online (Sandbox Code Playgroud)
我的问题:我如何找到I
?
你不需要.Git实际上可以使用reflog来解决这个问题.只需将--fork-point
旗帜传递给git rebase
,例如git rebase --fork-point b1
.
如果您确实需要手动执行此操作(例如,您使用的是旧版本的Git),您可以自己查看reflog.要么git log -g b1
或者git reflog show b1
要显示b1的reflog,你可以用它来弄清楚rebase之前的最后一次提交.
归档时间: |
|
查看次数: |
255 次 |
最近记录: |