web-dev-qa-db-ja.com

なぜコミットメッセージを書く必要があるのですか?

なぜコミットメッセージを書く必要があるのですか?私はしたくないし、私は毎回その愚かだと思います。

名前を付けずに使用するGUIフロントエンドを使用すると、強制的に実行することになります。コマンドラインでVCSを使用している場合でも、他のユーザーが毎回そうしていると聞きます。

1日に数回コミットし、機能を完了していない場合、何について書いていますか?何度もコミットした後でメッセージを書くだけで、ミニタグの時間か、実際のタグを実行するときだと感じています。

私は正しいですか、それとも何か不足していますか?また、分散システムを使用しています

18
user2528

「便利でよく考えられたメッセージを書いて、機能が100%完成し、ユニットテストが完了したときにのみコミットする」と言うすべての人に、私はこう言います:まだSVNマインドセットで。

gitを使用している場合、これは私がスマートワークフローと呼ぶものです。

  1. コミット好きなだけ。そこに古いクイックメッセージを書き込みます。とにかく誰もそれを見ることはないでしょう。
  2. 言うまでもなく、10回のコミットで、作業していた機能が完成しました。次に、テストを記述して、それらのテストをコミットします。またはあなたが望むものは何でも。 TDDが好きなら、最初にテストを書いてください。私も気にせず、gitもしません。
  3. git rebase -i最初の「厄介な」コミットから、ローカルの履歴をつぶし、編集、省略、またはその他の方法で最近の履歴をクリーンアップしてローカル履歴を論理的でクリーンなコミットでナイスメッセージに修正します。
  4. 片付けが終わったら、誰かに引っ張ってくれるように頼む.
  5. すすぎ、繰り返します。

ステップ3は、最終的なニースコミットが終了したときであり、SVNを使用する場合は、最初の2つのステップが完了するまでコミットをやめなければならないことに注意してください。これは、他のほとんどの回答が示唆していることです。 IOW、あなたは自分の半分書いた未テストのコードを他の人に与えたくないので、機能が完了するまで1週間はコミットしません。バージョン管理を最大限に活用していません。

また、ステップ1と3の間のどこでも、git PushラップトップのHDDが故障した場合に無料のバックアップを取得するための、サーバー上の独自のプライベートレポミラーへの変更。

25
Alex Budovski

貧しいメンテナがバグを探していて、リビジョンに追加されたことがわかったとき。 xyz、彼は何の回転を知りたいでしょう。 xyzが行うことになっていた。

55
Peter Taylor

あなたはあなたのソースコードにコメントしますよね?

あなたは、コードがhowとだけ言うので、whyと言う非常に良いコメントを書きますか?

コミットメッセージはそのようなコメントであり、それゆえそれは非常に重要であり、あなたがそれを正しくすることを考えれば考えるほど、それはソフトウェアの将来のメンテナーにとってより有用になります。

アクティブなソフトウェアについては、この特定のコメントは次のように表示されます。

gitk --all sample

http://longair.net/blog/2009/04/25/a-few-git-tips/ にあります)。これにより、whoがソフトウェアに取り組んだwhenwhat 彼らがやった。

thisはコミットコメントの最終的な目標です。つまり、「what "あなたの将来の自己またはあなたの同僚に、そしてそれがあなたが良いコミットメッセージを書くことに注意を払うべき理由です。

35
user1249

コミットメッセージが愚かであると思われる場合は、間違ったコミットを使用しているようです。

コミットは正当な理由で行われる必要があります—コミットは、作業中の機能で分解したタスクに関連している必要があります。これらのタスクが正式なものであろうと、単に念頭に置いているものであろうと、コミットする各変更は、多かれ少なかれタスクを完了するため、何らかの形で機能するはずです。

次に、コミットメッセージがはるかに優れた目的を果たします。あなたが終了したタスクと、それがどこか他の場所で追跡されていない場合は、そのタスクが必要だった理由またはその目的を説明してください。

  • カプセル化を改善するためにユーザークラスをリファクタリング
  • APIスタブを作成したため、コントローラークラスでインターフェイスを使用できます
  • データベースクラスを抽象クラスに変換し、モックデータベースをテストケースで使用できるようにしました。

そうすれば、あなたや他の開発者はリポジトリやファイルの履歴を閲覧して、特定の進化が起こった場所と理由をかなり簡単に確認できます。または、特定のリビジョンがバグの有罪であることが判明した場合、コミットメッセージはその行が挿入された理由についての手掛かりを与えるので、単にそれを取り除いて、考えられていた何かを再ブレークすることはできません修正し、代わりに正しい方法で修正できます。

15
Nicole

コミットコメントはすべてを解決するわけではありません。彼らが役立つ可能性は常にありますmislead彼らが助ける限り-特に開発者がそれらを入力する必要があることに腹を立てているとき。これを試してください:それらを森の中のパンくずトレイル、または登山ウェイポイント、またはトレーサー弾丸のように考えてください。そうすれば、混乱するような経路の輪郭を描くことができます。

それらから大したことをしないでください。正直に言うと:

  • 「編集された空間インデックスエンティティ、Dao、および機能Xを処理するためのUI」
  • 「機能リクエスト#1234とバグ#5678の増分チェックイン」
  • 「私は最後のビルドを壊しました。これらは私が逃したファイルです。」

短く、「全体像」を保ってください。可能であれば、機能/バグシステムの問題番号を参照してください。一部のバージョン管理UIには、この種のもののためのフィールドが含まれています。

12
Scant Roger

WTF /分の数を減らします;)

enter image description here

これにより、チームがより幸せになり(嫌いになりません)、チームの出力が向上し、コストが削減される可能性があります。

11
Rook

したがって、チームの他のメンバーは、プロジェクトツリーの変更をチェックインしているWTFを知っています。

9
Edward Strange

まともなコミットメッセージを入力する練習をしなければ、次のようなメッセージを入力する私の同僚のようになるからです。

no changes

または

testing

変更されたファイルが100以上あるコミット(ここでは冗談ではありません!!)。

あなたがそのような開発者になると、メッセージを入力するだけでどんなに馬鹿げていると思っていても、他の世界の目には愚かに見えます。

8
stijn

変更が意味をなさない場合、なぜコミットするのですか?

意味のある変更をコミットするだけです。例えば。先週、かなり大きなリファクタリングを行いましたが、約3日かかりました。その間、私はたくさんのコミットをしなければならなかったでしょう。一部はかなり小さな変更(「新しい責任を反映するためにクラスXをYに名前変更」または「メソッドZ()クラスQに移動)」でしたが、その他は本当に大きな変更でした。機能/リファクタリングいくつかのコミットが押しつぶされる可能性があるかどうかを確認しますが(少なくともgitはそれをサポートし、他のツールについては知りません)、通常は後で役立つため、そのままにしておきます。

行を編集している最中はコミットしないので、意味があるはずです。前回のコミット以降に行ったことを説明してください。

4
EricSchaefer

いくつかの変更を加えてシステムを壊し、チームによる数回のコミット後にこれを実現したときの状態を想像してください。変更内容は覚えていませんが、機能Xを拡張したり、モジュールYからファイルを削除したりすると、問題が発生する可能性があることを覚えています。

ただし、残念ながらリビジョン番号はXまたはYを変更したことを通知しません。そのため、過去N日間にコミットされたすべてのコードを読み取るか、書き込んだ詳細なコミットメッセージを読み取るだけです(コードよりはるかに読みやすい)。

そのため、同じ、退屈で役に立たない、関連のないテキストをコミットメッセージに書き込むと、コミットメッセージよりも有害になります。バグの根を見つける代わりに間違ったメッセージがあなたを誤解させるからです。

コミットするたびに意味のあるコミットメッセージを書くようにしてください。これはあなたとメンテナにも役立ちます。

3
GG01

何かが足りない。そこにはmustコミットを実行する理由があります。そうでなければ、実行しません。

コメントで行う必要があるのは、たとえwip: adding new state objectsであっても、理由を単語に入れることです。

3

他の人と作業している場合、コミットメッセージは他の人が何をしたかを実際に確認するために非常に重要です。それぞれのdiffを調べることははるかに多くの作業であり、誰かがなぜそれをしたのかを取得できない場合があります。他の人と一緒に作業し、誰か(おそらくあなたではない)が実際に振り返る必要がある場合、たとえば、前のバージョンからの動作が予期しない方法でどのように変化したかを追跡する必要がある場合...メッセージ。

単独で作業している場合...ほとんどが「そのまま」にコード化されているプロジェクト(たとえば、単一の単純なWebサイトまたはスクリプト)で、どこから来たのかが多少わかります。私がそのようなものに取り組んでいる場合、何かに取り組んでいるときは日付/時刻または最新の変更のみを気にします(復元するポイントはありますが、それは開発中に重要であり、それを実装した後ではありません)。バージョン管理は、いくつかのプラスを使用してバックアップを作成する方法の1つにすぎません。システムを完全に使用しているわけではないことは完全に同意しますが、小規模なプロジェクトでは、必要ない場合があります。

バージョンコントロールが2つの分割された方法で使用される前に、私は思いつきました。1つはプロジェクトの変更を文書化する方法で、もう1つは開発者を支援する手助けとして使用する方法です。これら2つはまったく異なります。コミットメッセージはある意味で非常に重要であり、他の意味ではほとんど役に立たない場合があります。

3
Inca

他の多くの人と同様に、私は余暇に少しコーディングを行い、改訂管理システムを使用して私の開発と変更の両方を追跡しています。私が利用できる空き時間の量は、週ごと、月ごとに大きく異なります。多くの場合、何週間も、あるいは何ヶ月もプロジェクトをコーディングする時間がなく、通常10分(通常の日)から40分(良い日)の範囲でした。これらは、特に問題をデバッグするための、特に素晴らしい条件ではありません。

紛失したり、簡単に検索したりできるメモを残すことは不可欠でした。各セッションの終わりに、セッションの作業は詳細なメッセージでコミットされます。次に、コミット履歴を確認して、自分の進捗状況と思考プロセスを追跡できます。これにより、先週、または先月の貴重な時間を最小限にとどめることができました。

私が説明しようとしている点は、優れたコミットメッセージは、何が起こっているか、何が起こっているか、何が起こっているか、そして何よりもなぜその理由が何であるかを理解するのに役立ちます。

2
Sparky

論理的に1分間考えてください。あなたがコミットしているとき、それは何かが行われたことを意味します。メッセージを残さない場合、他の人はどのようにして何が行われたかを知ることができますか?

2
Sergio

コミットにコメントしないと、ソースの変更をコメントしたくなるかもしれません。やがて、それはソースを乱雑にする可能性があります。

1
Joris Geer

コミットメッセージはそのチェックインに何が行われているのかを知るための迅速な方法であり、チームのほかの開発者が、コードのどの側面がどのリビジョンで変更されたかを知りたい場合に役立ちます(理由はいくつかあります)。 。

関連するメモとして、コミットメッセージでバグトラッカーのケース番号(1つを使用していることを願っています)を指定することをお勧めします。これにより、将来の状況を簡単に追跡できるようになります。

1
Mahesh Velaga

そのため、そのコードのメンテナが1年後に、その凶悪なコードを誰が探すのかを知ることができます。 :)

1
talonx