pockestrap

Programmer's memo

Gitのコミットメッセージからブランチ名を作る

設定

# .gitconfig

[alias]
  new-br = !git checkout -b "$(git log --format=%s -n 1 @ | ruby -pe '$_=$_.chomp.gsub!(/[^a-zA-Z0-9_]/, ?_)')"

本文

最近コミットメッセージからブランチ名を作ってcheckoutするようにした。 適当に最新のコミットメッセージを取り出して、コミットメッセージとして使えない文字をアンダースコアに置換するだけ。

「コミットメッセージとして使える文字」をだいぶ限定的に取っているからひらがなや漢字もアンダースコアになってしまうけど、ASCIIの範囲内でコミットメッセージを書くことがほとんどなので困っていない。

最初はアンダースコアではなくハイフンに置換していたのだけど、ブランチ名の先頭の文字にハイフンが使えなかったため、アンダースコアに切り替えた。

どうしてもアンダースコアだらけのブランチ名が生成されてしまうけど、ブランチ名はなんとなく分かれば雑で良いという思想なので特に困っていない。

以前はコミットメッセージとほぼ同じブランチ名を手打ちしていたので、このaliasを設定してからその手間が消えてだいぶ良くなった。


普段detached HEADで生活しつつコミットを作ってからブランチを命名する、というフローで開発しているので、この設定が役に立っている。 コミットを作るよりも先にブランチ名を考える人には必要なさそう。


旧人類なのでgit checkout使うなと怒られそう。