Jon Purdyには正しい考えがあります。git flowこれらのブランチの実際の管理も簡単になりgitます。ブランチ管理はに移行するための引数です。
gitあなたがsvn--to- git視点から来ているので、基本的な概要から始めましょう。git以下を考慮してください。
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
上記の、あなたのブランチmasterにdevelop(で示される\)、およびブランチdevelopへfeatureの分岐。ブランチに沿っ/てコミット(-)を使用して、これらのブランチをマージします()。(コミットはないが、マージが右側にある場合、次がコミットであること.を示すインジケータがあります-)。
簡単です。メインリリースに修正プログラムがある場合はどうなりますか?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
上記からdevelop分岐しmasterます。で発見されmasterたバグは、から分岐しmaster、修正してからにマージすることで修正されましたmaster。私たちは、その後、合併masterへdevelop、その後developにfeature2から新しいコードを巻かれ、hotfixこれらの枝に。
にfeature2戻るとdevelop、その履歴にはが含まdevelopれますhotfix。同様に、developにマージされてfeature2から、新しいコードでmasterそうマージ、developに戻ってmasterそれはそれは中にコミットに基づいているとして、滞りなく起こるのだろうmasterあなたがから分岐したかのように、時その時masterその時点で。
そのため、これを行う別の方法があります。
master--..........-........-
\ /\ /
---1.0-- --1.1--
あなたの1.0のリリースではtagged-取得1.0.1、1.0.2、1.0.3、など。
ここにトリックがあります:1.0でバグを発見し、1.1、1.2、および1.3に影響します。職業はなんですか?
最新または最も古いメンテナンスリリースから分岐して修正します。次に、あなたの新しいマージhotfixに支店を1.3に-そして1.2、1.1と1.0。メンテナンスバージョンの各ブランチから分岐しないでください。にマージ1.0しmasterたり、master戻ってマージしないでください1.0。1つのhotfixブランチを取得し、それをすべてのバージョンブランチにマージします。競合がある場合は、通知されます。コードを確認して、変更が正しいことを確認してgit diffください(友達です)。
特定の変更がどこにでも適用されるようになりました。系統は分岐していますが、大丈夫です。それは偶然ではありません。1.3頭に1.3.17のタグを付け、から分岐している進行中のすべての機能にマージして、先に進み1.3ます。
git flow延長はあなたのためにこれらのメンテナンス、機能、および修正プログラムの支店を管理することができます。ワークフローをいったん終了すると、これは簡単であり、ソースコード管理から多大なトラブルを取り除きます。
私はこれをプログラミングチームで見ましたが、プログラマーとしてそれほど深く働いたことはないので、日々のワークフローを自分で頭を動かしています。
gitか?これには、gitタグ付けされていないままであるため、どのコミットにビルドの問題やテストの失敗があるかを明確にするという追加の利点があります。