2017-04-26 163 views
0

我已閱讀git book的基礎知識,試圖將分支藍色與分支藍色合併爲一條直線。爲了更容易地查看歷史,我嘗試只有一個分支並且沒有連接。我有什麼選擇可以做到這一點,什麼是最好的?如何線性化Git中的「分裂」合併歷史記錄?

This答案暗示爲reset --soft,但這裏的演示假設合併後增長很多。 在af之前或最好在9c提交之前,將分支藍色更改添加到紅色是可以的。

* 5356e62 vimdiff solved 
* c1ccf86 red forward 
* 51fbd33 Merge branch 'blue' into red 
|\ 
| * 96575dc new file 
| * 1d7f531 some line and blue branch 3 
* | 9cc3291 new file 
* | 92569c6 another commit 
* | f8d3ab2 blue branch 3 
|/ 
* af8b651 init 

回答

0

買者 - 做什麼你問移動參考「落後」(有效去除一些提交)的所有方法;如果這些提交已與其他開發人員共享,則會產生問題。請參閱git rebase關於從上游重新分配資產中恢復的文檔,並瞭解雖然這是以重新分配方式記錄的,但它適用於所有歷史記錄編輯。

如果git reset --soft是對上一個問題的合理答案,這裏同樣合理。

git checkout 5356e62 
git reset --soft 9cc3291 

現在所有從1d7f531變化以後出現階段性變化,所以

git commit 

創建一個新的承諾是「南瓜」老犯成一體。

此時如果您有一個分支指向96575dc,那麼它將顯示爲未合併。 OTOH如果父分支以前是唯一可以達到96575dc的分支,那麼96575dc現在無法訪問;但如果你不需要詳細的歷史記錄,那也沒問題,因爲相關的更改在你的新提交中。

一個稍微更一般的解決方案是merge --squash,更一般的將是rebase --interactive

相關問題