186

commitファイルに変更が加えられていない場合、どうすれば新しいメッセージを作成して新しいメッセージを作成できますか?

コミットのコード(SHA?)は同じになるので、これは不可能ですか?

4

5 に答える 5

228

これを行う正当な理由はめったにありませんが、パラメーターは、空のコミットメッセージの場合--allow-emptyとは対照的に、空のコミット(ファイルは変更されません)用です。オンラインドキュメントを入力またはアクセスして、--allow-empty-message詳細を読むこともできます。git help commit

ツリーオブジェクト(独自のハッシュを持つ)は同一ですが、コミットには実際には異なるハッシュがあります。これは、おそらくタイムスタンプとメッセージが異なり、親のコミットも確実に異なるためです。gitこれらの3つの要素はすべて、のオブジェクトハッシュアルゴリズムに統合されています。


空のコミットが必要になる理由はいくつかあります(コメントの一部を組み込んでいます)。

  • 「宣言型コミット」として、テストまたはリントの合格に関する事後データ(Robert Balicki経由)を含むナレーションまたはドキュメント( DavidNeiss経由)を追加します。
  • git任意の変更を生成せずにコマンドをテストする( Vaelusを介して)。
  • ( Tatshgitolite経由)を使用して、削除されたベアリポジトリを再作成します。
  • ビルドツールを再トリガーするため(mattLummusを介して)、または個人のロギングやメトリックを目的として(DynamiteReedを介して)など、新しいコミットを任意に作成するため。ただし、よく考えてみてください。ブランチ/マージの構造によっては、コミットが非常に長く続く可能性があるため、「何もコミットしない」戦略によって、チームのリポジトリが一時的なワークフローアーティファクトで不注意に汚染され、コードリビジョンと一時的なクロフト。

コミットツリーにメタデータを追加する他の戦略は次のとおりです。

于 2012-09-18T03:38:07.303 に答える
69

メッセージ付きの空のコミット

git commit --allow-empty -m "Empty test commit"

空のメッセージで空のコミット

git commit --allow-empty --allow-empty-message
于 2017-11-06T15:36:35.613 に答える
53

私があなたの言うことを正しく理解していれば、あなたは空のコミットをしたいと思うでしょう。その場合、次のものが必要です。

git commit --allow-empty
于 2012-09-18T03:38:21.307 に答える
4

おそらく、より賢明な代替手段として、注釈付きタグ(メッセージ付きの名前付きコミット)を作成することができます。git tag -aオプションを参照してください。

于 2012-09-18T09:06:38.510 に答える
4

gitversionのようなシステムを使用している場合この種のコミットを行うことは非常に理にかなっています。+ semver:majorcommentを使用してメジャーバージョンをバンプするためのコミットを作成できます。

于 2016-04-28T17:13:49.100 に答える