git alias でいつも叩くコマンドを省略する
git
コマンドはよく叩きますよね。
最近はエディタやIDEにネイティブのVCSインテグレーションが搭載されるようになっていますが、中々慣れなくて結局ターミナルからポチポチコマンドを叩くことに。
そういう時、実際打つコマンドはそんなに多くありません。なのでそれらを登録してより早く表示出来るようにしましょう。
$ git config --global -e
でグローバルコンフィグを設定出来るようになります。
[alias] fe = fetch --prune --all
などと書くことで、 git fe
とコマンドを叩くと代わりにエイリアスに登録されたコマンドが実行されます。
私が使っているエイリアスも紹介しておきましょう。
git fe
fe = fetch --prune --all
これはリモートリポジトリからの情報を取得する fetch
サブコマンドの省略形です。
--prune
を追加することで、リモートリポジトリで削除されたブランチ情報も取得します。--all
を追加することで、origin
とupstream
のように複数のリモートリポジトリがある場合、全てに対して情報取得を実施します。
git flash
flash = !git fetch --prune --all && git pull --rebase
エイリアス登録時に !
から始めることによって、通常のシェルスクリプトとしてそのエイリアスを実行することが可能です。
要するに .bash_profile
などに alias foo="bar..."
と登録するのと変わりませんね。
これは先ほどの git fe
に加えて、現在のブランチをリモートと同じ状態にするためリベースプルを行っています。
git now
now = !git fetch --prune --all && git branch -vv && git status
これは実際あまり使わないんですが、現在のローカルブランチ状態とステータスを一発で表示するコマンドです。
単純な省略形
ame = commit --amend co = checkout st = status di = diff br = branch -vv l = log --oneline --no-merges
よく使うコマンドはまあ長いので、1~3文字のエイリアスを登録しています。
git branch -vv
とverbose表示することで、最新のコミット名と、upstreamブランチがある場合はそれとの差分を表示してくれるようになり、非常に便利です。
git cu
cu = name-rev --name-only HEAD
現在のローカルブランチ名を表示します。後述するエイリアスなどで便利に利用出来ます。
git push-cu
push-cu = !git push -u origin `git cu`
現在のローカルブランチをoriginリモートリポジトリにpushします。一応 git push -u
だけでもローカルブランチをpushするような設定も出来ますが(push.default)、明示した方が安全です。
git push-fcu
push-fcu = !git push -uf origin `git cu`
上のフォースプッシュモードです。
git delete-gone
delete-gone = !git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -D
プッシュしPRをマージした後は、該当のリモートブランチを削除するのが風習です。
しかしローカルブランチは手動で削除しなければならないのでちょっと面倒。
そこで、ブランチ一覧からupstreamで削除されたローカルブランチだけを取得し、ローカルブランチを削除するエイリアスを作りました。
(削除出来るブランチがない場合はエラーが出るんですが、まあ別に問題ないということで。)
このように、日常的に使うツールは少しでも早く、作りやすいように調整していきましょう。
一度作っても、後からフローが変わっていく場合もありますので、常にアップデートすることも大事ですね。