2015-11-24 34 views
4

我有一個分支約20提交。我怎麼能擠壓一系列的git提交起始和結束SHA的

分支上的第一個SHA是bc3c488...
最後SHA在樹枝上是2c2be6...

如何合併所有提交在一起嗎?

我想這樣做而不使用交互式rebase,因爲有這麼多的提交。

我需要這個爲github拉請求,我被要求合併我的提交。

需要做到這一點,而不做一個混帳合併--squash因爲我需要在本地壓縮和另一個開發人員合併,並希望我在合併前先做壁球。

+2

'git的復位--soft $ {FIRST_SHA}'然後再做出新的承諾的意願壓扁他們。我有一個更長的回答,但搜索沒有找到它。 –

+0

**首先**這裏是指_older_提交?和** SECOND **是指_newer_(更近期)的提交? –

回答

-1

交互式重新裝訂可以在這裏幫助。

假設您的分支是基於您上游的主分支。 (讓我們說你的上游是由「上游」遠程定義)

這樣做:

git rebase -i upstream/master 

「上游/大師」可以通過任何SHA如果你需要更精確的更換。

git rebase -i bc3c488 

您將被放置在由您的$ EDITOR環境變量定義的編輯器中。除了最上面的那一行外,每一行都將「pick」改爲「squash」(或簡寫爲「s」)。這將所有這些承諾壓縮成一個。

與任何合併或重新組合對另一行工作有代碼衝突的可能性。如果發生這種情況,做一個「混帳地位」,看看哪些文件衝突,編輯這些文件(如衝突將< < <和>>>符號分隔),並做了「混帳變基--continue」

重新制作一次重放提交的內容,如果您發現自己一遍又一遍地修復同一個衝突(有些工具可以幫助完成此操作),請記住這一點。

然後您將看到一個機會來編輯新的壓扁提交的提交消息。

用-f(這會重寫您想要的歷史記錄,但要小心這個)推送到您的遠程分支。

這是交互式衍合一個很好的教程:https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase-i