1. ホーム
  2. git

[解決済み] 変更なしと新規メッセージをコミットするには?

2022-04-16 18:33:55

質問

どうすれば新しい commit をクリックし、ファイルに変更がない場合は新しいメッセージを作成することができます。

コミットのコード(SHA ?)が同じになるので無理なのでしょうか?

どのように解決するのですか?

これといった理由はほとんどないのですが、パラメータは --allow-empty とは対照的に、空のコミット(ファイルが変更されていない)には --allow-empty-message は空のコミットメッセージです。また、次のように入力することで、さらに読むことができます。 git help commit または オンラインドキュメント .

ツリーオブジェクト (これはそれ自身のハッシュを持ちます) は同一ですが、コミットは実際には異なるハッシュを持ちます。なぜなら、おそらく異なるタイムスタンプとメッセージを持ち、間違いなく異なる親コミットを持つからです。これら三つの要素はすべて git のオブジェクトハッシュアルゴリズムを使用しています。


そこで は、空のコミットを必要とするいくつかの理由があります (コメントの一部を引用しています)。

  • 宣言型コミット(declarative commit)として、ナレーションやドキュメントを追加する場合(via. デイヴィッドナイス ) テストやlintの合格に関する事後的なデータを含む ( ロバート・バリツキ ).
  • テストするには git コマンドを、任意の変更を発生させることなく(via バエルス ).
  • 削除されたベアリポジトリを再作成するには gitolite (経由 Tatsh ).
  • ビルドツールを再トリガーする場合など、任意で新しいコミットを作成する場合 ( mattLummus ) または個人的なログやメトリクスのため ( ダイナマイトリード ). ブランチやマージの構造によっては、コミットが非常に長い間保存される場合があります。

コミットツリーにメタデータを追加する他の戦略には、以下のようなものがあります。

  • ブランチを分けるか、特定のステータスのコミットを常に指す軽量タグを付ける(例:"last accepted commit" や "current staging commit" など)。
  • 注釈付きタグ は、コミットツリー自体にエントリを追加することなく、既存のコミットを指すタイムスタンプ、コミッター、メッセージを記録する方法です。
  • git notes を使用すると、既存の不変コミットの上に可変ノートを関連付けることができます。