git config
コマンドでalias
を設定
git config --global alias.co checkout
このようにcheckout
にco
というエイリアスを設定すると、git co master
と打つだけでgit checkout master
と同等に打つのと同等になります。
git co -b hoge
のようにエイリアスに続けて追加で複数のオプションや値を渡すこともできます。
なお、オプション付きのエイリアスを設定する場合は下記のように''
か""
でクオートしてあげる必要があります。
git config --global alias.pf 'push -f'
git config --global alias.aa 'commit --amend -a --no-edit'
律儀にgit checkout master
とカタカタとタイプしている人を見ると、エイリアス設定しようよ!と言いたくていつもムズムズしちゃいます。
git config --global alias.cm 'checkout master'
このようにエイリアスを設定すればgit cm
ターーン!!!(ドヤ顔)でオッケー。
~/.gitconfig
を直接編集してalias
を設定
git config --global
で設定した項目は、ホームディレクトリ配下の~/.gitconfig
ファイルに保存されます。git config
コマンドでちまちま設定しなくても、このファイルを直接編集してもオッケーです。[alias]
の行に続く部分が文字通りエイリアスの設定です。
下記が僕のalias
の設定です。
これをコピペして、思うままにカスタマイズして使っていただけると幸いです。
[alias]
a = add
b = branch
c = commit
d = diff
f = fetch
g = reflog
l = log
m = merge
p = pull
r = rebase
s = stash
t = tag
w = show
aa = commit --amend -a --no-edit
bd = branch -D
bl = branch -a
cm = checkout master
co = checkout
cp = cherry-pick
df = difftool
du = difftool @{upstream}
mm = merge origin/master
pf = push -f
re = reset --soft HEAD~
rh = reset --hard
ri = rebase -i
rs = reset --soft
sl = stash list
st = status
su = submodule update
pop = stash pop
wip = commit -a -m \"[ci skip] WIP WIP WIP WIP WIP\"
amend = commit --amend --no-edit
shallow = clone --depth 1
これらの中から僕がよく使う超絶オススメ必殺エイリアスを紹介していきます。
お勧めalias
git aa
直前のコミットにブッコムやーつ
git config --global alias.aa 'commit --amend -a --no-edit'
これは、コミットされていない状態の全て差分を、直前(最新)のコミットにぶっこむコマンドのエイリアスです。
commit
に--amend
オプションを付けると、新たにコミットを追加するのではなく、直前のコミットを修正するような動作になります。
-a
オプションを付けるとgit add
でstage
に追加していない修正もコミットの対象になります。git add .
を省略できるイメージです。
最後に--no-edit
を付けることでコミットのタイトル・メッセージを編集するステップを省いています。
直前のコミットに修正漏れがあったような場合に、「追加の修正」のようなコミットを付け足すのは超絶イケてないので、今日からはgit aa
を使いましょう!
git wip
とりまコミットしとくやーつ
git config --global alias.wip 'commit -a -m "[ci skip] WIP WIP WIP WIP WIP"'
これは、コミットされていない状態の全て差分を、サクッと一発でコミットするコマンドのエイリアスです。
[ci skip]
をコミットタイトルに含めることで、無駄にCIを回さないようにするオモイヤリもある奥ゆかしいエリアスです。
作業を中断しなければならない場合などに咄嗟にgit stash
を使うと、stashの闇の中で修正が迷子になってしまうので、git stash
ではなくgit wip
しておくと良いです。
git re
コミットを取り消すやーつ
git config --global alias.re = 'reset --soft HEAD~'
これは、直前(最新)のコミットを取り消して、その差分をstage
に戻すコマンドのエイリアスです。
一度コミットをバラして整理しながらcommitし直したい時に使います。
git re
を連打すればどんどんcommitを取り消して行けるので便利ですが、branchを切った点より行き過ぎてしまうと困ったことになるので注意しましょう。
TL;DR
僕はgit wip
とgit aa
でとりあえず修正を1つのコミットにまとめていって、PRを出す直前にgit re
でコミットを取り消して、整理しながらコミットをまとめ直すようにしています。
ソースコードはすごく丁寧で綺麗にコーディングされているのに、gitの履歴(コミットログ)には無頓着になされている人のPRをみると、ちょっと残念というかもったいないなーと思ってしまいます。
gitの履歴を綺麗に保つことは自分にとっても、レビューアにとっても、あとあと履歴を追ってバグの原因探しをする羽目になる人のためにも、とても大切なことだと思います。
ソースコードだけでなく、gitの履歴も綺麗にするように気を使っているエンジニアがもっと増えて欲しいなと思ってます!