我如何找到什么提交分支最初分支后,上游分支已经重新设置?我如何找到共同的祖先来rebase?
我经常需要重订几个相关的分支时我拉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!
为了避免这种情况,我想要做的就是变基b2
到原始提交其分支的 ,即I
。我想要应用的这组提交是I..b2
,这意味着我想使用I
作为上游的rebase
(即使它不再是分支)。现在我必须指定--onto b1
(否则git会将我的更改应用到I
,这是我已有的)。
git rebase --onto b1 I
我的问题:如何找到I
?
这可能解释我的问题:我使用多个工作目录,将.git中的目录符号链接到我的“主”工作目录。所以签出'b1'的workdir的reflog和签出'b2'的workdir是分开的。 如果我在重新绑定b1之后不立即重新绑定'b2'(或者在更新'b2'之前多次重新绑定'b1'),手工查看reflog以查找正确的提交。我想我可以交叉引用这两个reflog,但是,寻找一个不在'master'中的常见提交? – mgiuffrida
无论您使用“b1”重新分配哪一个工作日,只需检查该目录中的reflog即可。 –