Skip to content
Latchkey

Git commitとは?

commitは、ある時点でのプロジェクトの保存されたスナップショットで、メッセージ、作者、そして親に結びつける一意の識別子を持ちます。

commitは、Gitにおける履歴の基本単位です。commitするたびに、追跡されているファイルの現在の状態を、あなたが誰か、いつ保存したか、変更を説明する短いメッセージとともに記録します。commitは連鎖して、CI/CD pipelineがbuildしdeployする履歴を形成します。

commitが記録するもの

commitは、追跡されたファイルのスナップショット、1つ以上の親commitへの参照、作者とcommitter、タイムスタンプ、そしてメッセージを捉えます。これらが合わさって、何が、いつ、誰によって、なぜ変わったかに答えます。「なぜ」はメッセージに宿ります。これは将来の読者やレビュアーが最も頼りにする部分です。

commitの作成

まず含めたい変更をstageし、それからcommitします。命令形の明快なメッセージが履歴を読みやすく保ちます。

Staging and committing
git add src/auth.ts
git commit -m "Reject expired session tokens"

commitは連鎖を形成する

各commitは親を指し返し、有向な履歴を形成します。branchはこの連鎖への移動可能なポインタにすぎず、mergeは複数の親を持つcommitを生成します。親をたどることで、Gitはプロジェクトの過去のあらゆる状態を正確に再構築できます。

なぜcommitがCI/CDにとって重要か

pipelineの実行は単一のcommitに結びつきます。CIが成功または失敗のチェックを報告するとき、それはその正確なスナップショットについて報告しています。だから結果は再現可能です。誰でも同じcommitをチェックアウトすれば同じbuildを得られます。小さく焦点の定まったcommitは、履歴をbisectして失敗を導入した変更を見つけることもはるかに容易にします。

良いcommitの習慣

  • 各commitを1つの論理的な変更に集中させる。
  • 何をではなく、なぜを説明するメッセージを書く。
  • 動作するコードをcommitし、履歴の各時点をbuild可能に保つ。
  • 無関係な編集をまとめないようにする。それはレビューとbisectを難しくする。

重要なポイント

  • commitは、メッセージ、作者、一意のハッシュを持つスナップショットです。
  • commitは親に連鎖して、プロジェクトの完全な履歴を形成します。
  • CIは特定のcommitに対して実行され、buildの結果を再現可能にします。

関連ガイド