この記事はなに?
2年ほど前にgit aliasの設定方法の記事を書きました。
この記事では、自分でもよく使っているaliasの備忘録です。
誰かのお役に立つことがあればいいなぁと思いつつ、ほぼ自分のための記事です
よく使っているalias
[alias]
st = status -sb
co = checkout
br = branch
ft = fetch
loga = log --graph --oneline
push-f = push --force-with-lease --force-if-includes
rebase-i = rebase -i --autosquash
dn = diff --name-status
bc = !"git branch --merged origin/HEAD | grep -vE 'HEAD' | xargs git branch -d"
ro = !"git fetch --prune && git rebase origin/HEAD"
解説
status -sb
status
コマンドは現在作業中の状態を確認するコマンドです。
オプションの -s
は -short
です。
git helpを読むとGive the output in the short-format.と書いてあります。
変更ファイルだけが表示され、かつファイル名の頭に M
や ??
などがついて、現在どのような状態になっているか見やすくなります。
オプションの -b
は -branch
です。
これまたgit helpを読むと、Show the branch and tracking info even in short-format.と書いてあります。
-s
と一緒に使うことで、現在のブランチ情報を表示してくれます。
他にもオプションがあるので、気になる方は git help status
でご確認ください。
checkout
ブランチ移動などに利用するコマンドです。
いっぱい使うので登録しています。
git co -b <新しいブランチ名>
で新規のブランチを切ることができます。
branch
ブランチを切るときに使うコマンドです。
これもいっぱい使うので登録しています。
fetch
リモートリポジトリから最新の情報を取得するときに使うコマンドです。
これまたいっぱい使うので登録しています。
log --graph --oneline
gitツリーを見やすくするためのコマンドです。
git log
でコミットの履歴を確認できます。
オプションの--graph
でgitツリーが表示されます。
ただ、 git log
と同じ情報が表示されてしまうので、情報が多すぎてツリー全体が見にくいです。
そこで、 --online
を追加して、コミットIDとコミットメッセージがわかるgitツリーを表示させています。
ちなみに年券表示させるのかとか、日付を表示させるのかとかカスタマイズできる内容が沢山あります。
push --force-with-lease
pushはコミットした内容をリモートに送るコマンドです。
オプションの --force-with-lease
は、pushの際にローカルとリモートを比較し、ローカルが最新でなければpushが失敗します。
-f
だけでも、リモートに強制的に上げることができますが、チーム開発をしている場合、同じブランチを複数人で触ったときに、他の人のコミットをなくしてしまう可能性があります。
なので、 --force-with-lease
を利用しています。
この記事がとてもわかりやすいと思います。
rebase -i --autosquash
Qiitaでは、レビュー後の修正は git commit --fixup
で管理し、レビューが全て終わったらコミットをまとめる運用をしています。
--fixup
のことについては、下記の記事が詳しいので、気になった方はご覧ください
rebaseコマンドは、ブランチを統合するときに使います。
例えば、最新のmasterに作業中のブランチを乗せて開発したいときに使います。
オプションの -i
は --interactive
です。
リベース前にコミットのリストを作成します。
--autosquash
は git commit --fixup
を行ったことで、 fixup!
とコミットメセージの文頭についているコミットを、指定したコミットIDのコミットに自動で変更するオプションです。
-i
と組み合わせることで、リベース前に本当に正しい位置にコミットをリベースしようとしているか確認できます。
diff --name-status
diffコマンドは、変更差分を確認するためのコマンドです。
他のコマンドよりは使用頻度は少なめなのですが、私の場合、特定のコミットとコミットを比較して変更があったファイルのパスを取得したいときに利用しています。
git branch --merged origin/HEAD | grep -vE 'HEAD' | xargs git branch -d
マージ済みのブランチを削除したいときに利用するコマンドです。
日々開発を行っていると、ローカルにマージ済みのブランチが溜まって行ってしまうので、一括削除するときに利用しています。
git fetch --prune && git rebase origin/HEAD
最新のmasterを参照します。
作業中のブランチを最新のmasterにリベースしたいときに使っています。
mainをfetchして、pullして、作業中のbranch移動して…って手間なので、重宝しております。