[英]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一部分的提交。
從這一點開始,主要有兩種方法:
git cherry-pick
提交到upstreambranch的HEAD,從最古老的未合並提交開始。 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.