2014年、春のGit事情

なんとなく最近どんな感じでGitを使っているか、適当にリストアップしてみた。

よく使うやつ

  • git status

    git status --branch --short にしている。変更されたファイルが出る。とりあえず何をしたかざっくり把握する用。sエイリアスしている。一日100回くらい実行しているのではないか。

  • git diff

    特にオプションは指定していない。何をしたかしっかり把握する用。dエイリアスしている。一日50回くらい実行しているのではないか。

  • git grep

    バージョン管理しているファイルから渡した単語を含む行を検索、表示。関数の検索などあらゆる場面で超便利。オプションは --line-number --show-function --color --heading --break がオススメ。

  • git ls-files

    バージョン管理しているファイルのファイルパスを表示。どんなファイルがあったか一覧するのに便利。 パイプを駆使すると使い道が増える。例えばこのアプリ、ヘルパーは何があったっけ?って時は $ git ls-files | grep helper.rb で一覧できる。

  • git show

    HEADのコミットログとDiffを表示。ついさっき何やったのかを見るのに便利。最近けっこう使う。

  • git log --decorate

    git lエイリアスしてる。コミットコメントだけ読む時用。

  • git log --decorate --stat --patch

    git lpエイリアスしてる。git log よりもこれをよく使う。パッチ形式で変更を全て出す。pager=lessなので、lessで見ることになる。色々試した結果この出力に落ち着いた。

自作のサブコマンド

実行ファイルになってるコマンドは、PATHが通ってる所ににsymlinkして.gitconfigこんな感じで書いて使ってる。

  • git fixup

    HEADにステージされた変更をamendする。あ、これ忘れてた、って時(しょっちゅうありますね…)に便利。Originally by @idesaku.

  • git gsub

    git gsub foo bar すると、リポジトリ内のfoobarに置換する。リファクタリングなどで超便利。

  • git tb

    git topic-branchの略のつもり。HEADのコミットログをhyphenizeしてブランチを作成、チェックアウトする。1コミットしてやっぱブランチ切りたい!って時に便利。"Add missing translation"だとadd-missing-translationという名前のブランチができる。正しくコミットログを書いていてればブランチ名も正しくなるので良い。

  • git bk

    git backupの略のつもり。git tbしたあと元いたブランチに戻る。とりあえず現状でブランチ切っておきたい、という時に便利。

エイリアス

いくつかのコマンドは、こんな感じで1文字にエイリアスしてる。賛否両論なんだけど、一度試して欲しいです。特にsm

alias g='git'
alias s='git s'
alias m='git checkout master'
alias d='git d'

所感

なぜかgit showを使う機会が増えた気がする。

自画自賛になるけどgit gsubgit tbがライフチェンジングすぎてやばい。git renameも作った(内容はご想像の通り)が使い込んでないので載せなかった。

最近コミットコメントの3行目以降を努めて書くようにしてる。変更への想い・気持ち・感謝・コードからわからないコンテクストを込めている。実質的に変更箇所に書いた長文コメントと同じになる場合もあるんだけど、人はコードよりコミットコメントを先に読むので重複は気にせず書いてる。コードレビューへの予防線を張るのにも役立つ。

Add, Fix, Changeから始まるコミットコメントはコミットコメントスメルだと思って気をつけてる。「追加、直す、変える。そんなの変更管理してるんだから当たり前だろ!」と自分に言い聞かせて、もっとこの変更で何が起きるのか、具体的に表現する言葉を探すようにしてる。あんまりできてないけど。