我已經提交的順序如下:如何刪除不需要的提交和合並
A---B---D---E---G---H---
\ /\
C---/ F---
提交d引入不當的變化和合並提交Ë其轉發到F和G 我想刪除d E正式承諾。 什麼可以做的有:
A---B---C---G---H---
\
F---
我已經提交的順序如下:如何刪除不需要的提交和合並
A---B---D---E---G---H---
\ /\
C---/ F---
提交d引入不當的變化和合並提交Ë其轉發到F和G 我想刪除d E正式承諾。 什麼可以做的有:
A---B---C---G---H---
\
F---
您正在修改歷史記錄。如果該歷史不存在於其他任何回購站點上,那很好,否則確保你知道你在做什麼。
結帳在C
git的結帳-b my_better_historyÇ
命名爲my_better_history
與HEAD
了分公司,在你想要的提交攜帶: git的櫻桃挑選G H
檢查所做的工作。如果您的原始分支名爲master
,則可以執行git diff-tool master
以確保狀態相同。如果一切都很好,你可以讓你的新歷史成爲你的官方歷史。比方說,你開始與分支master
,那麼你可以做:
git checkout master
git reset --hard C#now your master is back to the common history point.
git merge my_better_history
現在主人將有希望的歷史。
這不是完整的答案,你將不得不找出休息..但HTH
解決方案1:
如果您沒有問題修改hostory - !在一些工作流程中,這是非常糟糕的..在一些它不是 - 就像當你有你的本地分支等..但要小心!
您可以使用好的工具互動變基:
git rebase -i HASH_OF_B
你會看到很可能是這樣的:
pick H
pick G
pick F
pick D <-- remove this line
pick C
pick A
,您只需將刪除它們d的那些(希望這會工作這方式當你有多個孩子等) - 要非常小心,我不知道這會做什麼..
解決方案2:
git revert C
git revert D
,你是安全的 - 而不是改變歷史等。
你將不得不這樣做的兩個分支 - 在F分支,也對H分支 - 不知道會發生什麼情況合併提交,如果你推出任何關於d合併更改..
感謝。是的,我忘了提及,所有這些都在我本地的回購中。 – msek