Pro Git を読んで、現在Gitの使い方を学んでいます。現在、ブランチとタグについて学習しています。私の質問は、いつブランチを使用する必要があるか、いつタグを使用する必要があるかです。
たとえば、プロジェクトのバージョン1.1のブランチを作成するとします。このバージョンを完了してリリースしたら、ブランチを離れてリリースバージョンをマークする必要がありますか?または、タグを追加する必要がありますか?タグを追加した場合、バージョンブランチを削除する必要がありますか?
簡単に言うと:ベストプラクティスは、分岐して、頻繁にマージし、常に同期を保つことです。
コードをマスターブランチとは別のブランチに保持することについては、かなり明確な規則があります。
経験則では、ブランチアウト後は、マスターブランチと同期を保つ必要があります。最終的にはそれをマスターにマージする必要があるからです。マージ時に巨大で複雑な混乱の混乱を回避するには、頻繁にコミットし、頻繁にマージする必要があります。
成功したGit分岐モデル byVincent Driessenは良い提案をしています。この分岐モデルが魅力的である場合は、 gitへのフロー拡張 を検討してください。他には フローについてコメント があります。
ご存じのとおり、Gitは1.0-2-g1ab3183のようなコミット識別子を提供しますが、これらはタグではありません!タグ付けはgitタグで行われ、gitタグを使用して作成されるタグは、git describeが作成するコミット識別子のベースになります。つまり、Gitではブランチにタグを付けません。コミットにタグを付けています。タグはコミットへの注釈付きポインタに過ぎないと言うのは正しいことです。
それを実証した実用的な例を見てみましょう。
/-[v1.0] v ---.---.---.--- S ---.--- A <- -マスター \ \-.--- B <-テスト
'S'をコミットしてみましょう。タグ 'v1.0'が指すコミットです。このコミットはブランチ 'master'とブランチ 'test'の両方にあります。コミット 'A'の上( 'master'ブランチの上)で " git describe "を実行すると、v1.0-2-g9c116e9
のようになります。コミット 'A'(別名 'test'ブランチ)の上で "git describe"を実行すると、v1.0-2-g3f55e41
のような結果が得られます。これは、デフォルトのgit-describe構成の場合です。この結果は少し異なることに注意してください。 v1.0-2-g9c116e9
は、ソートされたSHA-1 ID 9c116e9
を使用してコミットしていることを意味し、タグv1.0
の後に2回コミットします。タグがありませんv1.0-2
!
タグをブランチ「マスター」にのみ表示する場合は、「テスト」ブランチの分岐点の後に新しいコミットを作成できます(たとえば、GIT-VERSION-FILEのデフォルト/フォールバックバージョン情報のみを更新します)。 「test」ブランチのコミットにタグを付けると、 「v1.0.3」は「テスト」からのみ表示されます。
私は学ぶべき多くの、多くの、有用なブログと投稿を見つけました。ただし、プロが描いたものはまれです。したがって、@ nvieによる投稿- 成功したGit分岐モデル をお勧めします。私は彼のイラストを借りました:)
同時に2つの異なるバージョンのリポジトリがある場合は、ブランチが使用されます。タグは、リポジトリ内の特定の時点をマークする方法です。
リリース済みバージョンをマークするタグを追加する必要があります。そのリリースにバグ修正を行う必要がある場合は、タグにブランチを作成します。
HEAD [または他のブランチ]にマージされたブランチのみを削除したい。