2017-11-11 156 views
0

我有合併和關閉請求。之後,我刪除了該分支。並且該分支的所有提交現在都顯示在合併分支的歷史記錄中。現在有一個選項可以在Git中恢復分支,但我真正想要的是壓縮該PR的某些提交,以便它不會顯示在合併分支的提交歷史記錄中。假設最初PR有5次提交併成功合併並關閉。 有沒有辦法壓縮合並和關閉的公關中的一些提交?Squash提交閉合請求

+0

https://stackoverflow.com/a/47048569/2303202 – max630

+0

我的問題是,我不能直接在合併的分支上更改提交歷史記錄,因爲這是受保護的分支。有沒有什麼辦法可以從封閉的請求或恢復的分支中重寫歷史? – Akshay

+0

不,如果一個提交是某個分支的歷史,那麼它是如何發生的。 IT無法將其刪除。 – max630

回答

0

你會使用git rebase -i <hash of first commit before merge>,然後你可以選擇擠壓相關的提交。注意這是重寫實際的提交歷史記錄,所以如果你與其他人共享存儲庫,那麼在完成這些操作後你會有不同的提交,這是潛在的危險領域。

0

的唯一方法是改變在master分支歷史(假設你的feature/branch被合併上master):

$ git checkout master 
$ git reset --hard <commit-before-merge> 
$ git push -f origin master 

現在你可以修改你的歷史:

$ git checkout feature/branch 
# Hypothesis: 5 commits to squash together 
$ git rebase -i HEAD~5 
# Rewrite your history: reword, squash, etc... 

在這一點,也許你應該重新分配特徵/主分支

$ git rebase master 

一旦你滿意你的分支歷史,你可以把上游:

$ git push -f origin feature/branch 

然後創建GitHub上一個新的拉請求,並把它合併

重要事項

每個人跟蹤分支master將不得不頒發git pull --rebase以重新與上游重新同步它們的歷史記錄,其被改寫爲:

$ git checkout master 
$ git pull --rebase origin master 

這將防止任何衝突和/或合併提交將上游歷史視爲理所當然(接受theirs),發出快進。

這同樣適用於分支仍取決於master,這將需要相應地重建基礎:

$ git checkout feature/branch-still-depending-from-master 
$ git rebase master 

希望這有助於;)