modify - git rebase commit



git從歷史記錄中刪除合併提交 (3)

我的Git歷史看起來像這樣:

我想把紫色的提交壓成一個。 我不希望在我的提交日誌中再次看到它們。

我試過做一個git rebase -i 1 ,但即使1在藍色分支上(參見圖片),我仍然看到我的紫色分支上的每個提交。

如何完全刪除紫色分支(來自提交日誌)?

https://src-bin.com


Answer #1

要刪除合併提交

如果您要做的就是刪除合併提交(2)以便它從未發生過,那麼命令就是如下

git rebase --onto <sha of 1> <sha of 2> <blue branch>

現在紫色分支根本不在藍色的提交日誌中,你又有兩個獨立的分支。 然後你可以獨立地擠壓紫色並做任何你想要的其他操作,而不需要合併提交。


Answer #2

git rebase -i <sha before the branches diverged>執行git rebase -i <sha before the branches diverged>這將允許您刪除合併提交,並且日誌將是您想要的單行。 您還可以刪除任何不再需要的提交。 你的rebase不起作用的原因是你沒有回到足夠遠的地方。

警告:您正在重寫歷史記錄。 使用已推送到遠程倉庫的更改執行此操作將導致問題。 我建議只對本地提交執行此操作。


Answer #3

根據您的需要,有兩種方法可以解決這個問題:

解決方案1 :刪除紫色提交,保留歷史記錄(如果您想要回滾)

git revert -m 1 <SHA of merge>

-m 1指定要選擇的父行

紫色提交仍將在歷史中存在,但由於您已經恢復,您將不會看到這些提交中的代碼。

解決方案2 :完全刪除紫色提交(如果共享repo,則會發生破壞性更改)

git rebase -i <SHA before branching out>

並刪除與紫色提交相對應的(刪除行)。

如果在合併後沒有提交,那麼這將不那麼棘手。 額外提交會增加revert/rebase期間發生衝突的可能性。





git-rebase