🐁

Gitコマンドにエイリアスをつけて効率化を図ろう!

2023/07/19に公開

はじめに

エイリアスをつけて自分なりにカスタマイズすることで作業の効率が格段に上がります。

自分の設定を例に紹介します。
globalで設定するのでリポジトリ関係なく使えます。

ご自身の手癖にあったエイリアスをつけていただければと思います!

エイリアスをつけるメリットとデメリット

  • メリット
    • 自分の解釈で命名できるのでわかりやすい
    • タイピングが減るので速度が上がる
    • 試行錯誤するのがたのしい
  • デメリット
    • コマンドがより安易に実行できてしまうので注意が必要
    • 極端な別名をつけてしまうと本来のコマンドを忘れてしまうかも?
      • コマンドを他の誰かに教えるときに困るかも
    • 画面共有時、何をしているのか見ている人がわからなくなる場合がある

エイリアスの設定方法

例 : git statusgit st で見られるようにしたい
git config --global alias.st "status"
git config --global alias.エイリアスとしたいコマンド "設定したいコマンド"

git config --global alias.st "status"

例 : git log --onelinegit o で見られるようにしたい

git config --global alias.o "log --oneline"

最初に設定しておきたいエイリアス

一番最初に設定するおすすめのエイリアス

git config --global alias.al "config --get-regexp ^alias\."

設定したエイリアスの一覧を表示できるので、エイリアス忘れちゃった場合に確認する用ですね。

設定一覧

branch

命名例 : b

git config --global alias.b "branch"

checkout

命名例 : ch

git config --global alias.ch "checkout"

checkout -b

命名例 : chb

git config --global alias.chb "checkout -b"

branch -d

命名例 : bd

git config --global alias.bd "branch -d"

log --oneline

命名例 : o

git config --global alias.o "log --oneline"

log --oneline -10

命名例 : o10

git config --global alias.o10 "log --oneline -10"

-20とか-30とか、追加で入れておいてもいいかもしれません。
私は 1 ~ 10、10 ~ 100までいれてます

alias.o1 log --oneline -1
alias.o2 log --oneline -2
alias.o3 log --oneline -3
alias.o4 log --oneline -4
alias.o5 log --oneline -5
alias.o6 log --oneline -6
alias.o7 log --oneline -7
alias.o8 log --oneline -8
alias.o9 log --oneline -9
alias.o10 log --oneline -10
alias.o20 log --oneline -20
alias.o30 log --oneline -30
alias.o40 log --oneline -40
alias.o50 log --oneline -50
alias.o60 log --oneline -60
alias.o70 log --oneline -70
alias.o80 log --oneline -80
alias.o90 log --oneline -90
alias.o100 log --oneline -100

log --oneline --graph

命名例 : og

git config --global alias.og "log --oneline --graph"

こちらも同様に追加でオプションを付けています。

alias.og1 log --oneline -1 --graph
alias.og2 log --oneline -2 --graph
alias.og3 log --oneline -3 --graph
alias.og4 log --oneline -4 --graph
alias.og5 log --oneline -5 --graph
alias.og6 log --oneline -6 --graph
alias.og7 log --oneline -7 --graph
alias.og8 log --oneline -8 --graph
alias.og9 log --oneline -9 --graph
alias.og10 log --oneline -10 --graph
alias.og20 log --oneline -20 --graph
alias.og30 log --oneline -30 --graph
alias.og40 log --oneline -40 --graph
alias.og50 log --oneline -50 --graph
alias.og60 log --oneline -60 --graph
alias.og70 log --oneline -70 --graph
alias.og80 log --oneline -80 --graph
alias.og90 log --oneline -90 --graph
alias.og100 log --oneline -100 --graph

status

命名例 : st

git config --global alias.st "status"

fetch

命名例 : f

git config --global alias.f "fetch"

add -A

命名例 : ad

git config --global alias.ad "add -A"

commit -m

命名例 : cm

git config --global alias.cm "commit -m"

push origin head

命名例 : poh

git config --global alias.poh "push origin head"

stash

命名例 : sta

git config --global alias.sta "stash"

stash pop

命名例 : stp

git config --global alias.stp "stash pop"

merge

命名例 : mr

git config --global alias.mr "merge"

commit --amend --no-edit

命名例 : can

git config --global alias.can "commit --amend --no-edit"

reset --hard head

命名例 : rhh

調査とかでコードを書き換えたりしたけど、その変更が要らなくなった時に
ブランチをheadに戻すことができます

git config --global alias.rhh "reset --hard head"

@{-1}をつかったエイリアス

@{-1}はひとつ前にチェックアウトしていたブランチを意味します。

これを使ったコマンドがとても便利です。

ch @{-1}

命名例 : chp

git config --global alias.chp "checkout @{-1}"

mr @{-1}

命名例 : mrp

修正ブランチからマージしたいブランチに移動した後にgit mrpと打つだけでマージできます。

git config --global alias.mrp "merge @{-1}"

bd @{-1}

命名例 : bdp

git config --global alias.bdp "branch -d @{-1}"

全体を通した使用イメージ

メインブランチから修正ブランチにチェックアウトする。
[main] git chb add-init

修正ブランチでコミットする。
[add-init] git cm "add: initialize"

メインブランチに戻る
[main] git chp

マージする
[main] git mrp

プッシュする
[main] git poh

不要となった作業ブランチを削除する
[main] git bdp

おまけ

shortlog -nse --no-merges --author="名前"

命名例 : ucl

作業中のリポジトリでマージコミットを除いたコミット数をユーザーごとに表示するものに
--authorオプションを付けることで自分だけに絞ることもできます。

コミットの粒度が意識できているかを確認したくなるのでエイリアスをつけています。

git config --global alias.ucl "shortlog -nse --no-merges --author='名前'"
Thinkingsテックブログ

Discussion