またシェルスクリプトネタです。 Githubで直接ファイルを書き換えてコミットする際、任意の入力が無ければ “Update README.md” のように行われた事実がコミットメッセージになりますよね。 これをコマンドラインでの作業でもやりたいと思って簡単なスクリプトを書きました。

nobuyo/committer

git statusからステージングされている変更を拾ってきてコミットメッセージとして返してくれます。 簡素な仕様ですが、分かればいい程度で自分だけのリポジトリをちょっと書き換えるときに若干べんりです。

例えば以下のような感じになります。変更の事実がそのままコミットメッセージになっている様子が確認できます。 git本体へのオプション等には干渉しないので、ステージされた変更があるのにgit commit -amしたときなんかはコミットの精度が低下します。

% git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   .zshrc

no changes added to commit (use "git add" and/or "git commit -a")
% git commit -am "$(committer)" # here
[master 8e3fa69] modify .zshrc
 1 file changed, 3 insertions(+)

※追記(20160616)

そのままでは自分でメッセージ書いても変わらないので、.gitconfigに次のようにaliasを書いておくと捗ります。(ここにあります)

acm = "!f(){ git commit -m "\"$(committer)\""; }; f"   # auto commit -m
acam = "!f(){ git commit -am "\"$(committer)\""; }; f"   # auto commit -am