2014-11-06 61 views
2

我有一個非常大的分支,一個坐在git存儲庫中的非常龐大的軟件。由於我們的版本和上游的版本差異很大,因此決定將版本移植到當前版本。將軟件分支移植到新版本

那麼,最好的辦法是什麼?有一種方法來標記一個特定的git提交與一個標誌通知已被移植了嗎?或者我應該嘗試一些複雜的重新租賃計劃?

我主要是從物流的角度提問,因爲我肯定會向上遊推送一些功能(因此會針對當前的頭部進行重新設置),但大部分代碼需要更新並保留在我們的叉子。

+0

我想你會想看看git的內置合併函數,因爲它非常強大。 http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging – 2014-11-06 15:17:43

+0

您是否試圖重新定位或合併您的分叉,以查看觸發了多少個衝突? – LeGEC 2014-11-12 10:12:36

+0

@LeGEC對許多人來說,他們實際上在我的版本和他們的版本之間兩次更改了整個代碼庫的代碼風格: -/ – 2014-11-12 10:30:23

回答

4

這聽起來像你有一個棘手的合併提前!我建議你看一下git imerge,它可以幫助解決大的合併問題,將它們分解成更小的片段。引述項目頁面:

git-imerge有兩個主要設計目標:

  • 減少解決合併衝突其不可避免的最低限度的痛苦,通過尋找和呈現 最小可能的衝突:那些之間每個分支的一次提交引入更改。
  • 允許在合併過程中保存,測試,中斷,發佈和合作。

如果按照git-imerge過程中,你將有一系列相對較小的合併衝突,你可以修復一個接一個的呈現。我鼓勵你在每個解決步驟之後運行你有的任何自動化測試(或者至少編譯你的項目),以減少在你走的時候引入錯誤的風險。

無論您希望此流程的最終結果是合併提交,還是您對上游分支的提交都由您決定,git imerge可讓您選擇這些選項(以及其他一些選項)作爲清理一旦你完成了實際組合變化的難題,

+0

我不認爲合併適合這種特殊用例。我最終只會混淆兩個版本,不可能向上遊發送補丁。 – 2014-11-10 13:59:47

+1

Hi @Let_Me_Be,如果你看一下https://github.com/mhagger/git-imerge#simplifying-results,你會發現git-imerge可以使用你給它的分辨率來代碼到上游分支,如果分叉顯着分散,那麼你不太可能發生通過使用imerge然後git rebase無法工作的主要衝突。 – yjo 2014-11-10 14:02:49

相關問題