株式会社クリアコード > ククログ

ククログ


適切なサイズのコミットにする方法の案

以前、読みやすいコミットにする方法としてコミットメッセージの書き方小さくまとまったコミットの具体例を紹介しました。今回は、小さくまとまったコミットにするためのより一般的な方法のを紹介します。案としているのは、広く使えそうな気がしますが、思いついたばかりでまだ実例がないためです。この方法が使えそうな気がしたらぜひ試してみてください。

どのくらいのコミットが読みやすい適切なサイズかというのはケースバイケースのことがほとんどです。以前紹介した具体例が使えることは日に何回かあるでしょうが、1日に二桁くらいはコミットするはず*1なので、コミットの大半はケースバイケースで判断していることになります。では、ケースバイケースで判断しているときはどのように判断しているのでしょうか。感覚的にはケースバイケースで判断しているときも何かしら一般的な判断基準を使っていそうです。

そこで思いついた(気付いた)のが今回紹介する方法です。

やろうとしたことがパターンに当てはまったらそこでコミット

これまでの考えは、今やっている作業が小さくまとまったコミットのパターン(具体例)に当てはまるかどうかでコミットのサイズを判断すればよい、というものでした。この考えではパターンに当てはまらないケースに使えません。さらに、一般的に使えそうなパターンを増やすことは大変です。

そこで少し見方を変えてみます。パターンに当てはまらない変更をしているとします。このときはこれまでの考え方を使えません。この作業の途中でパターンに当てはまる変更をしたくなったとします。例えばtypoを見つけてしまったという状況です。そうなったら今の作業を早くキリのよい状態までもっていってコミットします。この状態から追加の改良などには手をだしません。エラーチェックが甘いまま残っているなどするかもしれませんが、それらは後の作業にまわして、今の状態から一番近いキリのよいところに着地します。その後にtypoを修正するコミットや後に回した作業をコミットします。

場合によっては着地点が遠すぎることもあるでしょう。そのときは、今の変更は一度横において*2パターンに当てはまる変更を修正して、また作業に戻るとよいでしょう。

このように、小さくまとまったコミットのパターンに当てはまったときに小さくコミットするという考え方だけではなく、パターンに当てはまったら今の作業を一段落させてコミットするという考え方も取り入れると、ケースバイケースで判断することが減るのではないでしょうか。もちろん、パターンに当てはまらなかった場合はケースバイケースで読みやすいコミットになるかを考える必要はあります。

まとめ

小さくまとまったコミットを見つけやすくする方法の案を紹介しました。これまでは、小さくまとまったコミットのパターンに当てはまったらその単位でコミット、という基準だけを使う方法でした。今回紹介した方法は、それに加えて、今の作業を切り上げる基準にもパターンを使うという方法です。この方法も使うことにより、パターンを使える機会が増えて、読みやすいコミットが増えることを期待しています。

*1 1時間に少なくとも1コミットはするだろうから、1日8時間開発していたら少なくとも8コミットくらいはするはず。もし、1時間に1コミットしかできなかったり1コミットもできなかったら、何か悩んだりつまづいたりしている状態だろうから、普段の状態なら10コミットはいくはず。

*2 Gitならgit stash

2012-04-17

«前の記事: 中小企業倒産防止共済制度 最新記事 次の記事: テストをすっきり書く方法»
タグ:
年・日ごとに見る
2008|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|