簡體   English   中英

git:分享合並兩個分支的工作

[英]git: share the work of merging two branches

我想合並到非常不同的Git分支。 這將是很多工作,因為他們有幾百個沖突。

什么是最好的方式,所以也許其他人可以幫助我,也可以合作這個?

通常,我只是做'git merge ...'然后經歷所有沖突,解決它們,然后進行提交。 但那只是當地的。

解決沖突的工作可能需要幾天時間。 我想在我工作的時候在網上完成我的更改。

如果您希望其他人幫助您,您需要將這些分支作為遠程分支放在某個可訪問的服務器上。

您不必一次完成所有工作。 分支機構在某個時間點出現分歧。 所以你從那里開始工作,但逐漸合並提交。

例如,您有主分支和非常不同的分支,稱為b。

如果你切換到master並執行git merge b你會遇到很多沖突。

所以你開始查看master和b分開的歷史。 然后在b分支中進行第三次提交並合並它

git merge <sha_in_b_branch>

你只會遇到一些沖突。 解決它們,提交,將您的更改推送到遠程分支,然后其他人可以繼續。 接下來幾次提交,解決沖突,提交推送等。繼續這樣直到你來到b分支的負責人。

當最近遇到這個問題時,我決定將分歧的合並分支倒回到最后一個常見提交(我用git cherry -v upstreambranch divergedbranch )並刪除所有提交,我不想合並。 (例如,那些已經存在於主分支中的提交,如果使用不同的散列。)

所以從提交列表中

git rebase -i --onto lastcommoncommit upstreambranch divergedbranch

我刪除了列出的所有提交

git log lastcommoncommit..upstreambranch

這樣做的結果是一個干凈但略顯過時的主題分支,其中僅包含尚未成為upstreambranch一部分的提交。

從這一點開始,主要有兩種方法:

  1. 你可以從outdatedbutcleantopicbranch git cherry-pick提交到upstreambranch的HEAD,從最古老的未合並提交開始。
  2. 將outdatedbutcleantopicbranch重新定位到git rebase --onto upstreambranch@{4 weeks ago} upstreambranch的upstreambranch,如git rebase --onto upstreambranch@{4 weeks ago} upstreambranch

完成rebase / cherry-pick會話后,您將更改推送到集成分支,其他人可以繼續使用相同的過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM