2013-05-16 20 views
28

の変更をコミットせずに、Vimは変更を加えることが私のために開きます。私が心を変えて何も変更せずにvimを終了すると、依然としてgit reflogに現れるコミットが行われます。出口Vimの私は<code>git commit --amend</code>か<code>git rebase -i</code>を使用する場合にGit

どのように私は何をコミットせずにエディタを終了しますか?

+0

'git reflog'は、その作業コピーに対してローカルであることに注意してください。それは、論理的な歴史ではなく、あなたの頭の時系列の歴史です。 –

+1

一時ファイルが変更された(保存された)ことを検出すると、gitはコミットします。もっと単純な質問は、「保存せずにvimを終了させるにはどうすればよいですか? gpojdが示すように、答えは ':q!'です。 –

+0

保存せずに終了しても、gitは以前のコミット(ハッシュタグの変更)を置き換えます。 – j0fb

答えて

14

あなたがgit commit --amendgit rebase -iを実行する際に変更をしないためにgitのを取得します。

メッセージを削除して保存してください。すべてのgitは、有効なコミットが発生したかどうかを確認するために、空でないメッセージを探します。コミットメッセージがあるので(前に何かをコミットしたため)、gitはそのコミットまたはリベースを有効と考えます。

+0

コメントを削除するのか、コメント以外の部分だけを削除するのですか? – Shanimal

+1

@記号が付いていないコメントは十分です。 – FDinoff

26

あなたが変更を加えて保存していないときは、:q!で十分です(あなたが修正していないときは普通のコミットで)。しかし、あなたが私のような人なら、あなたはすでに意識していても編集されたメッセージ

Git(およびメッセージを編集するためにVimを使用する他のツール)は、エディタが正常終了しない終了ステータスで終了した場合、プロセス全体を中断し(メッセージの保存された変更を無視します)。 :cq[uit]!コマンドでVimで実行できます。

+13

':cq'では+1、':q! 'では-1です。これは正しくありません。変更前のコミットメッセージをそのまま残し、実際の段階的な変更を適用します。 –

+1

@CharlesBaileyあなたは正しいですが、単純なコミットの場合、空のメッセージはGitのコミットを防ぎます。私は最初の文を実際の答えに向かって導入することを意図していました。 gpjodの答えの議論はすでにその問題を示していました。しかしこれをもう一度強調してくれてありがとう! –

+0

[OK]を、しかし、全体の質問は、 '修正'のケースについてのみですので、私は少しそれを言及するのは間違いだと思う;少なくとも「もしあなたが**改訂していなければ**」というようなことは一切言わずに。 –

25
:cq! 

これはVimにエラーを強制し、変更を保存しません。 LinkとVimのマニュアル。

関連する問題