ここに私が使用するいくつかのブランチ命名規則とその理由があります
ブランチの命名規則
- ブランチ名の最初にグループ化トークン(単語)を使用します。
- 短いリードトークンを定義して使用し、ワークフローにとって意味のある方法でブランチを区別します。
- ブランチ名の一部を区切るにはスラッシュを使用します。
- 先頭部分として裸の数字を使用しないでください。
- 存続期間の長いブランチには、説明的な長い名前を付けないでください。
グループトークン
ブランチ名の前に「グループ化」トークンを使用します。
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
グループには、ワークフローに合わせて好きな名前を付けることができます。私は短い名詞を使うのが好きです。より明確にするために読んでください。
短く明確なトークン
短いトークンを選択して、すべてのブランチ名に過度のノイズを加えないようにします。私はこれらを使用します:
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
これらのトークンのそれぞれを使用して、各ブランチがワークフローのどの部分に属しているかを通知できます。
変更のサイクルごとに複数のブランチがあるようです。私はあなたのサイクルが何であるかはわかりませんが、それらが「新規」、「テスト」、「検証済み」であると仮定しましょう。これらのタグの省略形を使用してブランチに名前を付けることができます。常に同じ方法でつづられ、ブランチをグループ化し、どの段階にいるかを通知します。
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
どのブランチが各ステージに到達したかをすばやく確認でき、Gitのパターンマッチングオプションを使用して簡単にグループ化できます。
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
スラッシュを使用してパーツを分離する
ブランチ名には好きなデリミタを使用できますが、スラッシュが最も柔軟であると思います。ダッシュまたはドットを使用することをお勧めします。ただし、スラッシュを使用すると、リモートへのプッシュまたはリモートからのフェッチ時にブランチの名前を変更できます。
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
私にとって、スラッシュは私のシェルでのタブ拡張(コマンド補完)にも適しています。構成方法では、パーツの最初の文字を入力してTabキーを押すことで、異なるサブパーツを持つブランチを検索できます。次にZshは、入力したトークンの一部と一致するブランチのリストを表示します。これは、先行するトークンおよび埋め込まれたトークンに対して機能します。
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshellはコマンド補完について非常に構成可能であり、ダッシュ、アンダースコア、またはドットを同じ方法で処理するように構成することもできます。ただし、そうしないことを選択します。)
次のように、多くのgitコマンドでブランチを検索することもできます。
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
警告:Slippがコメントで指摘しているように、スラッシュは問題を引き起こす可能性があります。ブランチはパスとして実装されるため、「foo」という名前のブランチと「foo / bar」という名前の別のブランチを作成することはできません。これは、新しいユーザーを混乱させる可能性があります。
裸の数字は使用しないでください
ブランチの命名体系の一部として裸の番号(または16進数)を使用しないでください。参照名のタブ展開内では、gitは数値がブランチ名ではなくsha-1の一部であると判断する場合があります。たとえば、私の問題追跡システムでは、バグに10進数で名前を付けています。混乱を避けるために、関連するブランチに単にnnnnnではなくCRnnnnnという名前を付けます。
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
15032だけを拡張しようとした場合、gitはSHA-1を検索するのかブランチ名を検索するのかわからず、私の選択は多少制限されます。
長い説明的な名前は避けてください
長いブランチ名は、ブランチのリストを見ているときに非常に役立ちます。ただし、装飾された1行のログを見ると、ブランチ名が1行のほとんどを消費し、ログの表示部分を省略できるため、邪魔になることがあります。
一方、手作業で習慣的に書き直さない場合、長いブランチ名は「マージコミット」でより役立ちます。デフォルトのマージコミットメッセージはMerge branch 'branch-name'
です。マージメッセージMerge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
を単にの代わりに表示する方が便利な場合がありますMerge branch 'fix/CR15032'
。