2017-06-05 125 views
-1

我有很多屬於特定分支的提交(數百),這是很久以前合併爲主(該合併後有新的提交)。 關於如何從主人中刪除這些提交的任何想法?建議不要一個一個地用git-revert。更像是一個filter-branch命令。 謝謝從主分支中間刪除特定的分支提交

+0

你想把它們帶回來,就像「將它們從分支的歷史中刪除,就好像它們沒有發生過一樣」(重寫分支歷史),或者你想「根據分支的當前歷史記錄應用提交那些變回「(恢復,不需要重寫)? – eftshift0

+0

[Git delete push commits]的可能重複(https://stackoverflow.com/questions/13577283/git-delete-pushed-commits) – legoscia

+0

@Edmundo第一選擇:將它們從主分支的歷史記錄中刪除,就好像它們沒有這種情況不會發生 – Cezar

回答

0

然後你要做的事情很簡單:在之前識別修訂你想從歷史中刪除的分支被合併。看看這個版本....然後選擇合併後的所有版本。

假設之前的版本合併爲修訂版A,合併版本爲B,您正在工作的分支被稱爲'someBranch'。然後,你可以這樣做:

git checkout A 
git cherry-pick B..someBranch 

如果你喜歡的結果,那麼你可以重新指向someBranch到當前版本:

git branch -f someBranch 
git checkout someBranch 

當你重寫一個分支,其他人都在工作「舊分支「,那麼爲了推動這個新的」重寫「歷史而存在摩擦,所以記住這一點。

+0

合併後,有數百次提交。不想櫻桃一個接一個。對不起,沒有更具體的 – Cezar

+0

如果它是一個線性流動,B..someBranch將會使用它們,所以你不必一個接一個地挑選。如果它不是線性流動,那麼您可以考慮使用rebase。就像:'''git rebase -p - 若有一個B someBranch''',如果我沒有錯的話。 – eftshift0

+0

如果在進行rebase時270個子提交(合併)沒有衝突,那麼rebase就可以做到這一點。我可以一一解決,但這不是我要找的 – Cezar