Gitコマンドのaliasを設定すると git checkout → git ch のように出来るようになります!
時短時短 ☺️
Gitの関連の設定を色々した結果「何やってるかよく分からないけど速い😂」
といい意味で評価していただいている(と信じたいw)事がある私の設定について記載します!
検証した環境
| 1 | git | 2.32.0 | |
| 2 | zsh | 5.7.1 | |
| 3 | Mac OS | 11.4 | macOS Big Sur |
| 4 | iTerm2 | 3.4.8 |
aliasを設定する前に
gitコマンドのaliasの設定の仕方は
- gitコマンドを使う
~/.gitconfig等、設定ファイルに直接記述
の2通り、記事の主旨と逸れるので簡単に。
gitコマンドを使う
# コマンドにスペースが入らない場合はそのまま記載
$ git config --global alias.ch checkout
# コマンドでスペースを入れる場合は "" で囲む
$ git config --global alias.chb "checkout -b"--globalの部分は--system・--local・--worktreeがあるのでお好みで。
設定ファイルに直接記述
vim ~/.gitconfig等で設定。
設定ファイルいじるのに慣れている人はこちらが速いと思います。
[color]
ui = auto
・
・
[alias]
ch = checkout
chb = checkout -balias設定で気をつけていること
私の場合、伝える上で他人のMac/PCでコマンドを叩く、もしくはコマンドを伝えるという事がちょこちょこあります。
また、sshでログインして別の環境でGit操作をする事もあります。
そのような場合自分のMacに設定しているaliasが使えません。
そういったケースて少なからず発生するものと思ってます。
なので、aliasを設定する際は元のコマンドが思い出せるようにすることを心掛けています。
例えば git checkout xxをgit c xxにするとcheckoutという単語を思い出せなくなりそうなのでgit chに設定しています。
この辺りの考え方・感じ方は人それぞれだと思いますが、
重要なのはどのコマンドをすると何が行われるか、というのが理解出来ていればGitの操作は思っている以上に楽に出来ます☺️
1. gitコマンドのalias
git ch
$ git checkout
checkoutは頻繁に使用するコマンド!
git ch -b "feture/xx"のようにブランチの作成時も短く出来ます
$ git config --global alias.ch checkout[alias]
ch = checkout他のパターンでgit coにされている人もいますね
git br
git branch
これを設定するとgit br -D feature/xxのようにブランチの削除も短くなります
$ git config --global alias.br branch[alias]
br = branchgit bra
git branch -avv
すべてのブランチを確認したい時用。
-aでリモートのブランチも一緒に表示され、
-vvは--verboseと呼ばれ詳細が表示されます。
更にvvと vを2つ重ねる事で追跡ブランチも分かる ようになります。
-av
-avv
$ git config --global alias.bra "branch -avv"[alias]
bra = branch -avvgit sh
git stash
何かと使うstash。
aliasに登録しておくとやっぱり便利
$ git config --global alias.sh stash[alias]
sh = stashgit save
git stash save -u
stashをする際にコメントを残したい事があり、その際に使用するコマンド。
「メッセージ付きのstashどうやるんだっけ?」となる事も多いのでaliasに登録しておくと楽ですね
$ git save "メッセージ付きのstashを残すぞ!"stashをする際はだいたい untracked のファイルも含めたい事が多い(私だけ?)ので、
-uを付けて untrackedのファイルも含めるようにしています。
$ git config --global alias.save "stash save -u"[alias]
save = stash save -ugit cp
git cherry-pick
登場頻度は低いcherry-pick。
しかし出てきたら出てきたで良く打ち間違えるし長いので。笑
$ git config --global alias.cp cherry-pick[alias]
cp = cherry-pickgit st
git status -s
私はstatusをtigで確認するのでstatusコマンド自体ほぼ使わないのですが、
-sを使って短めに表示するようにしています
$ git config --global alias.st "status -s"[alias]
st = status -sgit see
hub browse
gh repo view --web
該当リポジトリのGitHubをブラウザで開きます。
前者の場合hubコマンドが、後者の場合ghコマンドが必要になります。
インストールはそれぞれ
brew install hubbrew install gh
# hubコマンドの場合
$ git config --global alias.see "browse"
# ghコマンドの場合
$ git config --global alias.see "!gh repo view --web"[alias]
# hubコマンドの場合
see = status -s
# ghコマンドの場合
see = !gh repo view --webgit la
git log --oneline --decorate --graph --branches --tags --remotes --all
ログの確認はよく行うようにしているのでかなり使用頻度の高いコマンド。
私がこの記事の中で1番使うコマンドがこのgit la。
$ git config --global alias.la "log --oneline --decorate --graph --branches --tags --remotes --all"[alias]
la = log --oneline --decorate --graph --branches --tags --remotes --all利用頻度が高いため、私はggというコマンドをzshのaliasに登録しています
git delete-merged-branch <ブランチ名>
f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f
特殊なコマンドですがかなり便利!
指定した<ブランチ名>にマージ済みのローカルブランチを削除する、というコマンドになります。
例えばmasterにマージしているhoge・fugaがある時に
コマンドを実行すると
$ git delete-merged-branch master
Already on 'master'
Deleted branch fuga (was 813d817).
Deleted branch hoge (was 8a3cd3d).hoge・fuga2つのブランチが削除されます。
開発を進めていくとローカルブランチにマージして不要になったブランチがたまることは往々にしてあるので、
そんな時にこのコマンドを実行すればローカルのマージ済みブランチを削除出来ます。
↓のサイトを参考に設定させてもらいました。
$ git config --global alias.delete-merged-branch "!f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f"[alias]
delete-merged-branch = "!f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f"git aliases
git config --get-regexp alias | sed 's/^alias.//g' | sed 's/ / = /1
自分の設定しているGitのaliasを全て表示してくれるコマンド
$ git aliases
st = status -s
ch = checkout
br = branch
bra = branch -a -vvv
・・・このコマンドの使い道としては、例えば
- ペア・モブプロをしている際などに相手の人に自分が設定しているコマンドを伝えたい時
- 設定したコマンド名がどうにも思い出せない時
のような時に使えます。
↓のサイトを参考に設定させてもらいました。
$ git config --global alias.aliases "!git config --get-regexp alias | sed 's/^alias.//g' | sed 's/ / = /1'"[alias]
aliases = !git config --get-regexp alias | sed 's/^alias.//g' | sed 's/ / = /1'