我如何找到什麼提交分支最初分支後,上游分支已經重新設置?我如何找到共同的祖先來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即可。 –