緊急新人エンジニア応援企画! ということで自分が Git のエイリアスとして設定している便利コマンドを紹介していく。
直前のコミットに追いコミットする (git fixit)
git commit --amend --no-edit
もろもろ整えて git push しよう、とすると「あっちょっと修正したい」となるのはよくあること。その際いちいちコミットメッセージを書いて rebase するかというとそんな面倒はとりたくなく、一撃で終わらせたい。--no-edit でコミットメッセージを編集せずに --amend できる。
git fixit に設定している。git commit の引数をそのまま受け付けるので、git fixit -a や git fixit <file> のように使える。
メインブランチに戻る (git com)
f() { remote_head=$(git symbolic-ref --quiet refs/remotes/origin/HEAD); remote_head=${remote_head#refs/remotes/origin/}; git checkout ${remote_head:-$(git rev-parse --symbolic --verify --quiet main || git rev-parse --symbolic --verify --quiet master)}; }; f
最近だと main。または master ブランチに戻る。作業を一旦完了したときとか、メインブランチが進んでるので pull しておきたいときとかに使う。f() を定義してから呼び出してるのは、エイリアスからシェル呼び出しを使う際に引数をとれるようにするためのイディオムのようなもの。ここでは使ってないけど。。
git com にしてる。git co を git checkout にしてるので。"git checkout main".
git config --global alias.com '!f() { ... }; f' のように ! を付与して設定してください。
最近チェックアウトしたブランチを一覧する (git r)
git reflog -n 50 --pretty='format:%gs' | perl -anal -e '$seen{$1}++ or print $1 if /checkout:.*to (.+)/'
git r にしてる。複数のことを同時に進めてるとブランチ名も思い出せないのでこういうのでナビゲーションする。-n 50 のところは --since '1 weeks ago' などとしてもよいと思う。自分のリズムで。
ブランチやファイルを github.com で閲覧する (git o)
git browse-remote
git-browse-remote で、ブランチやファイルをブラウザで開いたり URL を標準出力に吐き出したりする。
git o にしてます。最近は gh でもっと便利になるのかもしれないがまだ移行する理由がない。git pr で git browse-remote --pr を呼び出し、プルリクエストも開けるようにしている。
コミットの SHA-1 を得る (git sha)
f() { git rev-parse "${1-HEAD}"; }; f
git sha にしてます。たま~に使う。これは引数とれるパターン。
