コミットメッセージのないGitコミット


108

コミットメッセージを指定せずに変更をコミットするにはどうすればよいですか?なぜデフォルトで必要なのですか?


6
最後に、git commit -a --allow-empty-message -m ''もうエディタを開くことはありません。以下の私の回答を
VonC 2013年

2
Windowsでは、このコマンドgit commit -a --allow-empty-message -m ''はコミットメッセージ " ''" でコミットするため、代わりにこのコマンドを使用することをお勧めしますgit commit -a --allow-empty-message -m ""
tav

回答:


137

意味のあるコミットメッセージを提供することは、優れた開発プラクティスと適切なリポジトリスチュワードシップの一部であるため、gitは通常、空でないメッセージを必要とします。コミットメッセージの最初の行は、git内のあらゆる場所で使用されます。詳細については「Gitコミットメッセージに関する注意」をお読みください

Terminal.appを開いcdてプロジェクトディレクトリに移動するとgit commit -am ''、空のコミットメッセージが許可されていないために失敗することがわかります。新しいバージョンのgitには
--allow-empty-messageコマンドライン引数があり、最新バージョンのXcodeに含まれているgitのバージョンが含まれます。これにより、このコマンドを使用して、空のメッセージでコミットを行うことができます。

git commit -a --allow-empty-message -m ''

--allow-empty-messageフラグの前に、commit-tree配管コマンドを使用する必要がありました。このコマンドの使用例は、Gitブックの「Raw Git」の章あります


1
の新しいバージョンにgit--allow-empty-messageコマンドライン引数があります。こちらのドキュメントをご覧ください。これは、plumbingコマンドを使用して同じことを行うことができたと述べていますgit-commit-tree
ジェレミーW.シャーマン

18
私は「意味のあるメッセージがコミット提供の文を考えている一つが提供するが、意味のあるコミットメッセージがあると言うことができます-良い開発の実践の一部は」単なる間違っていると考えられている私は1つのために-文が分裂とにかくあるとして、良い開発の実践の一部gitのは明らかリポジトリへの実際の変更を保存し、特に以来、あまり混乱に時々リードをその少ない情報を信じて、そしてgit diff正確に利害関係者が表示されますどのような人間書かれた説明に頼ることなく、含まれているコミットを。機械は可能な限り労働から私たちを救うべきです。
午前

2
@amn、私はまた、私が書いた何万もの上手に書かれたコミットメッセージについて誰も決して決して読んだことがないのではないかと考え始めたところです。今の私にとって、この習慣の重要性は、変更を説明するために変更を確認することを余儀なくされることです。これにより、バグに気付くことがあります。あなたは正しいです。コードにもっと注意を払い、コミットメッセージにはあまり注意を払わないことを検討します。
osa

7
Gitはもはやコード開発に使用されているだけではありません。GitHub wikiページまたはOverleaf LaTeXドキュメントを更新しているとき、ドキュメントを更新しているため、通常何も言うことはありません変更に関して意味的に意味のあるものはすべてdiffに含まれています。実際、変更のテキストをコミットメッセージ自体として使用していることに気づきました。完全に冗長です!
Jim Pivarski、2016年

1
@amn、コミッターがそうであるgit diffと信じているときでさえ、時々の出力は自明ではありません。
カウリネーター

26

そして、エイリアスを追加すると、さらに良いでしょう?

git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'

これで、nccommitを実行します。コメントがないため、ncを実行し、すべてをコミットする必要があります。


19

重要なコードの更新に取り組むときに、中間セーフポイントが本当に必要な場合は、次のようにするだけです。

git commit -am'.'

以下:

git commit -am.

そしてそれは何をしますか?
フィッシュ

メッセージ '。'でコミットを追加します
気だるい

私がこの方法を使用するのは、自分がコミットした内容を文字通り思い出せずdiff、すべてに対して怠惰な場合です。
TheTechRobo36414519

16

注:git1.8.3.2(2013年7月)以降、次のコマンド(上記Jeremy W Shermanが述べた)はエディターを開きません。

git commit --allow-empty-message -m ''

コミット25206778aac776fc6cc4887653fdae476c7a9b5aを参照してください。

-mgit commit オプションで空のメッセージを指定すると、エディターが起動します。
それは予想外であり、不必要です。
メッセージ文字列の長さを使用してユーザーが指定したかどうかを確認する代わりに、オプション-mが指定されているかどうかを直接覚えてください。


git 2.9(2016年6月)では、空のメッセージの動作が改善されています。

Adam Dinwoodie(によるコミット178e814(2016年4月6日)を参照してください。Jeff King(によるコミット27014cb(2016年4月7日)を 参照してください。(合併によりJunio C浜野- -0709261コミット、2016年4月22日)をme-and
peff
gitster

commit:空のメッセージを無視しないでください -m ''

  • git commit --amend -m '' --allow-empty-message」は奇妙に見えますが、メッセージをまったく持たないようにコミットを修正する有効な要求です。
    の存在の誤検出のため-mコマンドライン誤って検出したため、ログメッセージを元のコミットから保持することになりました。
  • git commit -m "$msg" -F file」は$msg空の文字列であるかどうかにかかわらず拒否される必要$msgがありますが、同じバグにより、が空の場合は拒否されませんでした。
  • " git -c template=file -m "$msg"" $msgは空の場合でもテンプレートを無視する必要がありますが、無視せず、代わりにテンプレートファイルの内容を使用しました。

3

これを達成するためにgitは必要ありません。bash関数をクリエイティブに使用すれば、うまくうまくいくでしょう。メッセージを気にしない場合は、デフォルトのメッセージを設定して、忘れてください。

function gitcom() {
  git commit -m "my default commit message"
}

本当に冒険したい場合は、1つのコマンドで追加、コミット、プッシュできます。

function gitzap() {
  git add . && git commit -m "whatevs" && git push $1 $2
}

どちらを実行するか

gitzap origin master

さらに深くなり、parse_git_branchを使用してキーストロークをいくつか保存するか、「origin」と「master」の共通のデフォルトを設定することもできます。


1
このbash関数の設定方法の詳細を教えてください。
adaam

1
OSXまたはLinuxを使用している場合、これらの関数をコピーして.profileに配置できます(作成しない場合は、ホームフォルダーにあるはずです)。新しいコンソールウィンドウを開くと、これらのコマンドを使用できます。これらのファイルに変更を加える場合は、bashセッションを更新する必要があります。そのため、次のエイリアスをそのファイルに追加することで、処理を高速化できます。 alias er = "source〜/ .profile"#これはリセットされます。ショートカットを追加する場合は、「ea」と入力するだけです(エイリアスを編集)そしてerを更新するには
Steven Garcia

2
スクリプトを呼び出して(拡張子なしで)gitがスクリプトgit-comgit-zap見つけられる場所(つまり、PATHのどこか)に配置した場合、gitはそれらを通常のgitコマンドのように扱い、次のように呼び出すことができます:git comgit zap origin master
Manuzor

1
bashでそれはどちらかだfunction gitcom {gitcom() {TMK、修正?

2

Gitにはコメントを付けるためにコミットが必要です。それ以外の場合、Gitはコミットを受け入れません。

デフォルトのコミットメッセージとしてgitを使用してデフォルトのテンプレートを設定するか、gitで--allow-empty-messageフラグを検索できます。(100%確実ではありませんが)空のコミットメッセージを受け入れるようにgitを再構成できると思います(これは良いアイデアではありません)。通常、各コミットは、メッセージで説明される少しの作業である必要があります。


1
なぜこの回答が反対票が投じられたのかわかりません。Gitに空のコミットメッセージを受け入れるよう強制するか、「保存」のようなメッセージを使用することは悪い考えであることに同意します。それとの戦いをやめて、ただいまいましいツールを学んでください。
Jezen Thomas

1

私は最も簡単な解決策を見つけました:

git commit -am'save'

以上で、git commitメッセージに関する問題を回避できます。

その称賛をbashやその他のものに保存して、さらにシンプルにすることもできます。

私たちのチームメンバーは常にこれらのメッセージを書き込みますが、ほとんどの人がそれらのメッセージを再び見ることはありません。

コミットメッセージは、少なくとも私たちのチームでは時間を無駄にするものなので、無視します。


1

私のプライベートプロジェクトに次の構成があります。

git config alias.auto 'commit -a -m "changes made from [device name]"'

そうすれば、急いでいるときに

git auto
git push

そして、少なくとも私はコミットがどのデバイスから行われたかを知っています。


-5

コミットメッセージは、常に従うべきベストプラクティスです。あなたが唯一の開発者でなければ、それがすぐに変わることはありません。

git commit -a -m 'asdfasdfadsfsdf'

それは一種の冗談です。しかし、変更をheroku(たとえば)に送信するために作成する必要がある小さなコミットについては、単一の開発者インスタンスで問題ありません。
コロラドブルー2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.