M.Y. 雑感ブログ

札幌からWebの技術などを発信しています。

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 を追加することで、 originupstream のように複数のリモートリポジトリがある場合、全てに対して情報取得を実施します。

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で削除されたローカルブランチだけを取得し、ローカルブランチを削除するエイリアスを作りました。

(削除出来るブランチがない場合はエラーが出るんですが、まあ別に問題ないということで。)


このように、日常的に使うツールは少しでも早く、作りやすいように調整していきましょう。

一度作っても、後からフローが変わっていく場合もありますので、常にアップデートすることも大事ですね。