2014-07-24 116 views
0

我已將修復提交直接推送到master,這違反了純度標準。我們通常有拉請求合併。Git Undo撤消請求合併後的最後幾次推送,保持合併

然後我混帳拉東西,切換到功能分支(fb)。
進而實現雜質後,我檢查了主,收歸直接推送,並做了一個推-f起源

所以主又開始看起來很不錯。 然而,由於拉拽請求之前創建的,當我合併我拉的要求掌握,我再次看到那些不好的承諾,將其直接完成(從下往上讀):

- commit 4 - Merge pull request xyz commit 3 from fb 
- commit 3 - Some message 
- commit 2 - Revert "commit 1 - Some message" 
- commit 1 - Some message // (direct commit to master) 
- commit 0 previous - last known good commit 

基本上,我想擺脫之間的東西,並希望之間沒有任何東西存在:

- commit 4 - Merge pull request xyz commit 3 from fb 
- commit 0 previous - last known good commit 

我該怎麼做?

回答

0

你可能想要做一個變基:

git rebase --interactive commit_4^ 

然後刪除行有關承諾你不希望保留。

請記住,你會鬆動他們......好吧,你仍然可以讓他們回來(使用reflog),但他們不會再存在於你的日誌歷史中。

當其他人使用您的主人時,這也不會被建議,因爲這會造成分歧的歷史。他們將需要將他們的主人重新定位爲反對你將推動的新主人。