私はコミットの最中です。コミットメッセージをvimに入力しました。今、何かを変える必要があることを思い出しました。私がやりたいことを達成する他のオプションがあることを理解していますが、コミットを中止する方法があるかどうかを知りながら、これまでに入力したコミットメッセージを保存します。
私はコミットの最中です。コミットメッセージをvimに入力しました。今、何かを変える必要があることを思い出しました。私がやりたいことを達成する他のオプションがあることを理解していますが、コミットを中止する方法があるかどうかを知りながら、これまでに入力したコミットメッセージを保存します。
回答:
はい。コミットメッセージを別のファイルに書き込みます(:w /some/other/path.txt
)。次に、保存せずにエディターを終了し:q!
ます()。以前にファイルを元のパスに保存した場合は、すべてを削除し、空のファイルを最初に書き込みます(空のコミットメッセージはコミットを中止します)。
ここで、「実際に」コミットする準備ができたら、代替パスに保存したメッセージファイルを使用します。
または、コミットメッセージをvimのバッファの1つにコピーします。
あなたが本当にこれをする必要がないことは注目に値しcommit --amend
ます:コミットが行われた後にコミットを変更することができますので、簡単な解決策はあなたが得たものでコミットを生成し、プッシュする前にそれを修正することです。壊れた状態でコミットを完了しreset HEAD~
(作業コピーがコミット前の状態にリセット)、作業コピーを修正してcommit -a -c HEAD@{1}
から、古いコミットメッセージを使用することもできます。
write the empty file (an empty commit message will abort the commit)
一部は魅力のように働きました、ありがとう!
エディターがエラーコードで終了できる場合-Gitはコミットを中止します。VIMを使用する場合は、次のように入力します。
:cq
ゼロ以外のエラーコードで終了し、コミットを中止します。
commit --amend
、既存のコミットメッセージとを削除する必要がある場合と同様に、を中止するための優れたトリックです:wq
。
git commit --amend
なく私がやったときに私の命を救ったgit rebase --continue
。
コミットメッセージを書き込むためにvimを開いている場合は、#で始まらない行を削除するだけで、gitはコミットを中止します
Aborting commit due to empty commit message.
ggdG
メッセージのすべてのコンテンツを切り取り、次に実行したvim
ときにP
、以前に切り取ったテキストだけを表示できます。
はい、可能です。コミットするには、エディターはコミットメッセージをファイルに書き込み、.git/COMMIT_EDITMSG
ステータスコード0で終了する必要があります。
したがって、VI / VIMを使用している場合は、次のことを実行することをお勧めします...
:w
(デフォルトでは現在のコンテンツがに保存されます.git/COMMIT_EDITMSG
):cq
git commit -eF .git/COMMIT_MESSAGE
-F /path/to/file
/パス/に/ファイル任意のコンテンツを持つエディタを移入します。ただし、デフォルトで-e
、編集用のフラグを追加しない限り、これは即座にコミットを実行します。
/foo/bar/
プロジェクトのルートからの相対パスなど)を指定するだけです。git commit -eF ../../.git/COMMIT_MESSAGE
:w
do :sav committmp
and ではなくgit commit -eF committmp
私は通常、IntelliJ
提供された端末を使用してコミットを行います。残念ながら私のコミットは手動です:
git commit -m'my message' // etc
したがって、安全だと私が思う唯一のことは、ターミナルウィンドウを閉じることだけです。保存する場合はテキストをハイライトし、コピーしてターミナルウィンドウを閉じます。
@bdonlanの回答はこの質問そのものに適していますが、より良い解決策が必要となる状況を指摘しておきます。
最後のコミットに変更を加えたいとしましょう。だからあなたは@bdolanが示唆したように行います:
git add files
git commit --amend
新しいメッセージの書き込み中に、それらのファイルをそのコミットに追加したことを後悔していると想像してください。問題は、すでに保存されたコミットメッセージでスタックしていて、エディターを終了すると(保存の有無にかかわらず)、それらの変更が最後のコミットに追加されます。これらのアクションの前の状態に戻すには、最後のコミットを分割する必要があります-避けたいと思います。
トリックは、エディターで保存し、エディターを終了することです。エディターには、行が1行だけある#
か、行がまったくありません。終了すると、次のメッセージが表示されます。
Aborting commit due to empty commit message.
そして、あなたは最後のコミットをまったく変更していません。
git commit; vim ....; git commit --amend; git reset HEAD@{1}
。つまり、修正を「取り消す」場合、以前のコミットを分割する必要はありません。修正前にHEADであったコミットオブジェクトはとして保存されHEAD@{1}
ます。また、ゼッタはすでにすべての非コメント行を削除することを提案しました。