このオプションはいったい何か?

git commitのオプション--allow-emptyご存知でしょうか?

これは、オプションの名前の通り空のコミットの作成を許可するオプションです。

通常変更がないとコミットが作れないようになってるので 空コミットを作るにはこのオプションを指定する必要があります。 add(もしくはrm)もしない(stageに何も載せない)で commitしたときの注意文には登場するので知ってましたが使ってませんでした。

最近、開発フローの中で使い道を思いついて使うようになったので紹介です。

その1 空Pull Request作れる

githubのプルリクって、基準になるブランチから変更されたコミットがないと作れないと思ってます。

でも、変更はないんだけどプルリクのcommentに変更の「概要」「目的」「ビジネスインパクト」「どの数値が改善するのか」など色々さきに書いておきたいこととかありますね。 考えてる内容で、エンジニア、エンジニア以外にもレビューしてブラッシュアップしてもらったりできると便利です。

@netwillnetさんが言ってたけど、確かにhubコマンド使ってissueをプルリクに変更するよりこっちの方が簡単です。hubコマンド使えないと変更できないし。そういうメリットもある。

コマンド自体の作業はこんな感じ

1 とりあえず最新のmasterからブランチ作る、ブランチ名はそれなりに分かるように!

git checkout -b make_todo origin/master

2 空コミット作る、コミットコメントは「プルリク作るためです」みたいなのでいいかも

git commit --allow-empty -m "make pull request"

3 普通にpushする

git push origin make_todo

あとはgithubのほうでブランチを使ってプルリクつくります。とっても簡単 ボクは、hubコマンド使ってプルリク作って、エディタで前述のような内容でコメント書いてます。 なんか ナマニエプルリ?とか言うのがあるらしいけどそういうのにも使えると思います。 すでに何か変更してしまった時点でレビューしても遅い時あるので.... 弊社オーマイグラスでは開発の初期からプルリク作って開発してます。 結構一般的だけど、そういうときプルリクのタイトルに[wip]とか付けてます。 (wip = Work in progress)

その2 何をやるかが明確になる

きれいにコミットログを積み重ねていく人、あとでコミット整理する人 色々いますが、まぁ変更作業してると色んな所に手を出しそうになるので 一つのコミットにいろんな変更が入ってしまうわけです。 そもそもそのコミットに何を入れるのか先に決めておくとマシになりそうです。 そんなときにも使えます。 --allow-emptyオプション!

変更の開始から変更のコミットまで

1 空コミットつくる

git commit --allow-empty -m "バグを修正するためにモデルの修正するよ"

2 普通に変更する

vim とかでゴニョゴニョゴニョ

3 addする

git add app/model/glass.rb

4 先に作ったコミットに変更を入れる

git commit --amend

5 このコミットでやろうとしてた変更が終わって別の変更に映るときはまた空コミット作る、後は繰り返し

こんな感じ最初に何を変更するって書いてるコミットがあると いろんな部分に手をだすのを防げそうです。 結局心がけ次第なんですが、自分に合う方法ってあると思うので 1つの方法として参考にしてくださーい。

まとめ

--allow-emptyは意外に使えるオプションだったわけです。 また、新しい使い方を思いついた時は書きたいと思います。 この記事も最初にちゃんとタイトル決めておけばよかった....

前に買ったけど全部読めてないので、読みたい。

Recent Entries