windyakinってなんて読む

うぃんぢゃきんではない

GitHubさえあればブランチ名は適当でいいのかもしれない

f:id:windyakin:20210304231722p:plain

その日もいつものように仕事でコードを書いていた。動作確認も終えて一段落したので、作業内容をGitにコミットするためにブランチを切ることになったのだが、 git checkout -b と打ったところでブランチ名を何にするか悩んでしまった。そのリポジトリのブランチ名運用には何か取り立てたルールがあるわけでもなかったので、まあいつもなら update_〜 とか fix_〜 とかつけるのだが、今回行った作業内容に対してどれもピンと来ず、そのまま10秒ほど考え込んだあとたっただろうか、ふと自分の中にある考えが湧いた。

「もしかしてブランチ名って適当でいいのでは」

「ブランチ名考えるのめんどくさいしブランチ名なんて適当でいいじゃん」ということを言っているわけではない。そのことの実現にはGitHubの役割が大きく寄与している。

仕事から趣味の開発まで無くてはならない存在になったGitHubだが、バージョン管理システムで管理されている内容をウェブ上で確認できるというのは割と古来からあるシステムである。しかしGitHubそのものの最大の強みというのは、やはり「Pull Request」にあるだろう。Pull Requestはそのリポジトリに取り込んで欲しいコミット群をぶら下げたブランチに対して「なぜそれが必要であるか」ということを説明するための簡潔な表題とその事に関する詳細な文章を紐付けさせることができる。他の開発者はそれを読んでどんな変更なのかを理解するための主たる材料として、その内容をリポジトリに取り込むかどうかを判断することができるのだ。

ただ、そのGitHub上で行われるPull Requestを通した開発サイクルの中で、ブランチ名が評価されるタイミングがまったくないことに気づいた。だからといって流石にブランチ名に変なことを書くのははばかられるが、おそらくブランチ名にどんなに正しい英語が書かれていてもプラスの材料にはならないし、逆に支離滅裂な英語だとしても特に問題が起きるとも思えない。そう例え真心込めてブランチ名手打ちしたとしても、機械的に生成した文字列でブランチ名を決めたとしても、変更内容とPull Requestの内容が一緒であればそれは一緒の変更である。

なので最近ブランチを作るときは以下のコマンドをシェルコマンドの履歴から呼び出して実行している。

git checkout -b $(git config user.name)_$(date +'%Y%m%d')_$(cat /dev/urandom | head -c 50 | sha256sum | head -c 10)

これでこんなかんじのブランチが生まれる。

windyakin_20210304_2e19ba98cd

若干物々しいが、やっていることはブランチ名にIDと日付とランダムな文字列を10文字くっつけているだけである。参考にしてもらってよいが、人によってはGitのuser.nameに空白が入っていたりするかもしれないので、その辺りは各々いい感じにして欲しい。

そして2週間ほどこのブランチ名を付けて実際に開発をしているのだが、最初に困ったのは開発していくと同じようなブランチ名がいくつか並んでしまい、それぞれなんのブランチだったか判断に迷うことがあることである。ただ、これに関してはGitHubCLIツールを使うことでうまく回避できた。

シェルの画面上でPull Requestの一覧を表示したり、Pull RequestのIDでチェックアウトしたりできるのでブランチ名で判断できないということが少なくなった。作業用ブランチが大量になってくると問題かもしれないが、個人の手元であればこれぐらいでどうにかなるのではというのが現在の感想である。

あと本当に必要なブランチにはちゃんと名前をつけたほうが良い。例えばmain(master)ブランチの名前までランダムにする必要はないし、もしGitHub Flowなどそういったものに則っているのであれば、必要なプレフィックスは最低限付けたほうが良いことは確かだろう。

ただ、もしあなたが開発用のブランチ名に悩んでいるようであれば、一度本当に必要かどうかは考えてみて欲しい。