Gitマルチブランチ開発時のmergeマージポリシー

2387 ワード

一、develop、master、hotfix合併戦略


プロジェクトは一般的にdevelop、masterの別のブランチdevelopブランチがテスト環境テストに配置され、複数の開発エンジニアが自分のcommitをdevelopブランチに提出し、テストエンジニアに渡してテストする.masterブランチはオンラインブランチで、問題のないdevelopブランチをテストし、オンラインが必要なときにmasterブランチにマージします.
masterとdevelopのコミット履歴を一致させ、developがmasterにマージされるたびに衝突しないようにし、ライン上のコードとテスト環境ループのテストが完了したコードが一致することを保証し、マージコードによるライン上の問題を回避します.
一時的にオンラインにする必要がある場合は、masterブランチに基づいてhotfixブランチを確立し、テスト後にmasterブランチにマージできます.
hotfixブランチとdevelopブランチは並列であり、hotfixブランチがmasterブランチにマージされた後、developブランチに同時にマージし、developブランチとmasterブランチのコミット履歴が一致することを保証する必要がある.
 
hotfixは2つのケースに分けられます.
A:hofixとdevelopブランチは同じファイルを変更しておらず、競合は発生しません
   1)master :

        a -> b 

   2)develop 

        ​a ->b -> c        commit c x

   3)hotfix 

        a->b-> c1       commit c1  y

    * :*

   1)master merge hotfix

        master: a->b->c1

   2) develop rebase master

        develop: a->b->c1->c     ( )

B:hotFixとdevelopブランチが同じファイルを変更し、競合が発生
   1)master :

        a -> b 

   2)develop 

        ​a ->b -> c         commit c x

   3)hotfix 

        a->b-> c1          commit c1  x

   * :*

   1)master merge hotfix

        master: a->b->c

   2) develop rebase master

         develop: a->b->c1->c2    

 ( ), , x 。commit c2 c 

上記の手順に従って変更すると、developマージmasterは競合を解決する必要はありません.
tip:mergeの場合はコミットしたcommit情報を含めて、次のコマンドを使用して操作してください.これにより、履歴の表示が容易になります.
git merge master --log --no-ff

                                                                                                                                                                                              
                                                                                                                                                                                              

二、マルチブランチA、B、C並列開発時の合併戦略


一、プロジェクト背景:
プロジェクトABブランチが同時に開発を行う場合、Aブランチ開発中に他のブランチBがオンラインになり、Bブランチオンラインバージョンがマスターに同期された場合、開発中のブランチAにオンラインバージョンを統合し、Aブランチオンライン時にBブランチのコードを上書きし、機能が後退することを避ける.
二、コマンドラインの連結手順:
1.開発ブランチAに切り替える:
git checkout【開発ブランチ】
2.開発ブランチへのマスターのマージ(Bがマスターに同期しているため、マスターをAにマージし、AにB以上のラインの最新コードが含まれていることを保証する):
git merge --no-ff master
3.連結コードをリモート・ライブラリにプッシュします.
git push origin【開発ブランチ】