簡體   English   中英

合並后如何變基?

[英]How can I rebase after a merge?

我正在閱讀 Pro Git 的書,並被困在變基上。

下面是場景: 在此處輸入圖像描述

所以兩個分支已經合並了。 然后書上說,在我們進行合並后,我們仍然可以改變主意,將 C4 重新設置為 C5,如下所示: 在此處輸入圖像描述

但我試圖復制變基,發現在合並后,如果我嘗試,我不能再變基:

git 結帳 branch_on_c4

git rebase branch_on_c5

我沒有新的C4'提交,消息是:

首先,倒帶頭在上面重播你的工作

申請:添加

使用索引信息重建基礎樹

回退到修補基礎和 3 路合並

無變化——已應用補丁**

如果我沒有先合並兩個分支,那么在 C5 上重新定位 C4 是沒有問題的。 但是一旦我完成了合並,我就不能再變基了,那么作者如何或作者在合並后使用什么命令來進行變基呢?

tl;博士

合並后如何變基?

你不需要,這不是書上說的。 如果您不喜歡合並,只需將其丟棄,然后改為rebase 。


然后書上說,在我們進行合並后,我們仍然可以改變主意變基

不,它沒有。

...如果不是在[ 發生這種情況]時進行合並,而是運行git rebase teamone/master ...

也就是說,而不是合並,而不是after

因此,您要么必須運行fetch並提前識別潛在問題,要么運行正常的 merge pull ,確定它是一團糟並將其扔掉以重新開始:

git reset --hard HEAD@{1}

(我傾向於避免使用HEAD~1語法進行合並,因為我不想考慮哪個父級是哪個父級 - “HEAD 的先前值”的 reflog 語法更簡單 IMO)。

我假設您在這里參考圖 45 和圖 46: Git 分支變基

接下來,推送合並工作的人決定將 go 退回並重新調整他們的工作; 他們執行 git push --force 以覆蓋服務器上的歷史記錄。 然后,您從該服務器獲取,降低新的提交。

該人很可能做了一些事情來撤消合並,例如:

git reset --hard HEAD~1

然后可以執行rebasepush --force

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM