Git のブランチ名をエディタで変更する


ふつうにブランチ名を変える方法

ふつう作業開始時にブランチを作ります。

git checkout -b issue-1234-yabai-warning

いくつか実装を加えていくと、実装内容とブランチ名が合わなくなってくることがよくあります。
ですので Pull Request を作る前に、実装内容を表すようにブランチ名を変更します。

git branch -m issue-1234-yabai-warning issue-1234-replace-deprecated-methods

(git branch -m old-name new-name でブランチ名を変更)

しかしこのブランチ名を変更するコマンドの入力がダルいので、これを楽にしたいと思います。

ブランチ名変更の面倒な点

コンソールでブランチ名を変更するときは、次のステップになるかと思います。

  1. ブランチ名の変更コマンドを、補完を利用してとりあえずどちらも 変更前の名前 で入力 (実行しない)
    • git branch -m issue-1234-yabai-warning issue-1234-yabai-warning
  2. Alt + Backspace など駆使して変更後の名前から不要なものを削る
    • git branch -m issue-1234-yabai-warning issue-1234-
  3. 新しい名前を入力
    • git branch -m issue-1234-yabai-warning issue-1234-replace-deprecated-methods

特に 1. は、git-completion による補完があったとしても、パカパカ TAB を入力する必要があって面倒です。

ブランチ名をエディタで変更する

自分で入力しない

自分がいまいるブランチを名前の変更対象に限定 した変更用コマンドを作りました。

また、 現在のブランチが勝手に入力 して変更点のみに注力すればいいようになっています。

ふだんコミットメッセージを入力しているように、エディタでブランチ名を変更します。

出来る限りらくらくになることを願って次のコマンドをつくりました。
(.gitconfig に追加して使います。)

[alias]
    rename-branch = "!f () { \
        local tmpfile=$(mktemp 2> /dev/null || mktemp -t tmp); \
        trap \"rm -f $tmpfile\" EXIT; \
        local branch=$(git rev-parse --abbrev-ref HEAD); \
        echo \"$branch\" > $tmpfile; \
        EDITOR=${EDITOR:-vim}; \
        $EDITOR $tmpfile; \
        git branch -m $branch $(cat $tmpfile); \
    };f"
  1. git rename-branch でエディタが立ち上がります
  2. 現在のブランチ名が入力済みなので、そこからブランチ名を変更します
  3. 保存して終了することでブランチ名を変更できます

(はじめと同じ GIF です)

便利!!!

おわりに

もともとのブランチ名変更作業と比べて、入力する文字がだいぶ減って楽になったと思います。
やったね。