画面にVIがコミットメッセージを待機しているときにGitコミットを停止するにはどうすればよいですか?


203

私はGitにgit bash内からコミットを実行するように依頼しましたが、いつものようにVIが起動しました。

コミットをキャンセルしたいのですが、この時点からコミットを続行しないようにするにはどうすればよいですか?


:q!vimを終了するために入る前にEscを押す必要があることを追加する価値があります。
M_無慈悲な

回答:


332

次の2つのオプションがあります。

  • 空のコミットメッセージを提供します。それが新しいコミットであり、まだメッセージを保存していない場合は、単に使用できます:q!(保存せずに終了します)。保存済みの場合(または以前のコミットを修正している場合)は、ログメッセージ全体を削除して、もう一度保存します。これはVimのggdG+ :wqで実行できます。

  • エディターをゼロ以外の終了コードで終了させます。Vimで使用できます:cq(エラーコードで終了します)。

作業コピーをでコミットする前の状態にいつでもリセットできることは注目に値しますgit reset HEAD^


96
:cqはビジネスです。何らかの理由で、私は:qを使用するかどうかに関係なくgitを耕します!
Sirex

2
git reset HEAD ^はローカルの変更を破棄します
juanmf

2
:q!定義済みのメッセージがすでに存在するため、おそらく機能しません。編集しているだけです。
Papipo

しゃっくり:git reset HEAD^さらに要求された場合、シェルは^を行継続として解釈することがあります。試してみてくださいgit reset "HEAD^"git reset HEAD^^またはgit reset HEAD~1代わりに、この答えは1:stackoverflow.com/questions/14203952/git-reset-asks-more
ジェイクスティーブンス・ハース

76
  • :q!コミットを修正するときには機能しません。コミットメッセージは更新されませんが、修正を実行します:-(
  • :cq 修正を完全に中止します。

1
別の+1を追加できるといいのですが。私の修正が間違ったコミットを拾うとき、私はここにたくさんの時間を過ごしてきました。
Wyrmwood 2019

8

総括する:

  • 新しいコミット(つまりgit commit)を作成するときに、を使用して終了し:q!ます。
  • 修正(つまりgit commit --amend)するときは、たとえばvを押しながら矢印キーを使用して選択し、Deleteキーを押して、コミットメッセージ(#で始まっていない最初の数行のみ)を削除します。変更を適用するために終了し:wqます!使用すると:q!、変更が失われ、以前のコミットメッセージが使用されます。

VIMを使用する場合、どちらの場合でも終了して:cqも問題ありません。VIMはエラーコードを表示して終了し、コミットは中止されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.