Git大好き人間のおすすめGit alias設定

2022.05.22
2022.06.25
Git大好き人間のおすすめGit alias設定

Gitコマンドのaliasを設定すると git checkoutgit 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等で設定。

設定ファイルいじるのに慣れている人はこちらが速いと思います。

~/.gitconfig
[color]
      ui = auto
・
・
[alias]
    ch = checkout
    chb = checkout -b



alias設定で気をつけていること

私の場合、伝える上で他人のMac/PCでコマンドを叩く、もしくはコマンドを伝えるという事がちょこちょこあります。

また、sshでログインして別の環境でGit操作をする事もあります。


そのような場合自分のMacに設定しているaliasが使えません




そういったケースて少なからず発生するものと思ってます。

なので、aliasを設定する際は元のコマンドが思い出せるようにすることを心掛けています。




例えば git checkout xxgit 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
~/.gitconfig
[alias]
    ch = checkout

他のパターンでgit coにされている人もいますね




git br

git branch



これを設定するとgit br -D feature/xxのようにブランチの削除も短くなります



$ git config --global alias.br branch
~/.gitconfig
[alias]
    br = branch

git bra

git branch -avv



すべてのブランチを確認したい時用。


-aでリモートのブランチも一緒に表示され、

-vv--verboseと呼ばれ詳細が表示されます。


更にvvvを2つ重ねる事で追跡ブランチも分かる ようになります。



-av


-avv


$ git config --global alias.bra "branch -avv"
~/.gitconfig
[alias]
    bra = branch -avv

git sh

git stash



何かと使うstash。

aliasに登録しておくとやっぱり便利


$ git config --global alias.sh stash
~/.gitconfig
[alias]
    sh = stash



git save

git stash save -u



stashをする際にコメントを残したい事があり、その際に使用するコマンド。

「メッセージ付きのstashどうやるんだっけ?」となる事も多いのでaliasに登録しておくと楽ですね

$ git save "メッセージ付きのstashを残すぞ!"



stashをする際はだいたい untracked のファイルも含めたい事が多い(私だけ?)ので、

-uを付けて untrackedのファイルも含めるようにしています。


$ git config --global alias.save "stash save -u"
~/.gitconfig
[alias]
    save = stash save -u



git cp

git cherry-pick



登場頻度は低いcherry-pick

しかし出てきたら出てきたで良く打ち間違えるし長いので。笑


$ git config --global alias.cp cherry-pick
~/.gitconfig
[alias]
    cp = cherry-pick



git st

git status -s



私はstatusをtigで確認するのでstatusコマンド自体ほぼ使わないのですが、

-sを使って短めに表示するようにしています


$ git config --global alias.st "status -s"
~/.gitconfig
[alias]
    st = status -s



git see

hub browse

gh repo view --web



該当リポジトリのGitHubをブラウザで開きます。



前者の場合hubコマンドが、後者の場合ghコマンドが必要になります。

インストールはそれぞれ

  • brew install hub
  • brew install gh

# hubコマンドの場合
$ git config --global alias.see "browse"

# ghコマンドの場合
$ git config --global alias.see "!gh repo view --web"
~/.gitconfig
[alias]
    # hubコマンドの場合
    see = status -s
    # ghコマンドの場合
    see = !gh repo view --web



git 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"
~/.gitconfig
[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にマージしているhogefugaがある時に


コマンドを実行すると

$ git delete-merged-branch master
Already on 'master'
Deleted branch fuga (was 813d817).
Deleted branch hoge (was 8a3cd3d).

hogefuga2つのブランチが削除されます。




開発を進めていくとローカルブランチにマージして不要になったブランチがたまることは往々にしてあるので、

そんな時にこのコマンドを実行すればローカルのマージ済みブランチを削除出来ます。



↓のサイトを参考に設定させてもらいました。

Gitでマージ済みブランチを一括削除 - Qiita


$ git config --global alias.delete-merged-branch "!f () { git checkout $1; git branch --merged|egrep -v '\\*|develop|master|main'|xargs git branch -d; };f"
~/.gitconfig
[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
・・・



このコマンドの使い道としては、例えば

  • ペア・モブプロをしている際などに相手の人に自分が設定しているコマンドを伝えたい時
  • 設定したコマンド名がどうにも思い出せない時

のような時に使えます。



↓のサイトを参考に設定させてもらいました。

gitconfigで何のエイリアスを設定していたかを確認するエイリアス - Qiita


$ git config --global alias.aliases "!git config --get-regexp alias |  sed 's/^alias.//g' | sed 's/ / = /1'"
~/.gitconfig
[alias]
    aliases = !git config --get-regexp alias |  sed 's/^alias.//g' | sed 's/ / = /1'

参考資料

おすすめ