git commit
gpg.commitsign = true
&&失敗(何らかの理由で)と同じ理由で失敗する可能性がありますgpg
。コマンドを再試行すると、空のエディタが開き、メッセージが失われます。
この場合、同じメッセージでコミットを再試行するために作成したコミットメッセージを復元する方法はありますか?
答え1
からman git-commit
:
FILES
$GIT_DIR/COMMIT_EDITMSG
This file contains the commit message of a commit in progress. If git commit exits due to an error before creating a commit, any commit message that has been provided
by the user (e.g., in an editor session) will be available in this file, but will be overwritten by the next invocation of git commit.
git commit
したがって、繰り返しではなく、次のコマンドを使用して前のメッセージを再試行できます。
$ git commit -m "$(cat .git/COMMIT_EDITMSG)"
または一般的な場合(たとえば、エイリアシングに適しています):
$ git commit -m "$(cat "$(git rev-parse --git-dir)/COMMIT_EDITMSG)")"
答え2
以前の(失敗した)コミットと同じコミットメッセージを使用して再送信してください。
git commit -F "$(git rev-parse --git-dir)/COMMIT_EDITMSG"
- コミットする前にテキストエディタでコミットメッセージを編集する機会がある場合は、
-e
(--edit
)オプションを追加してください。 - 失敗したコミットが詳細なコミット(たとえば)の場合は、Gitが詳細なコミットに追加したコメントがコミットメッセージの一部と見なされないように追加できます
git commit --verbose
。--cleanup=strip
結合例 - テキストエディタで失敗したコミットメッセージを編集し、Gitがコミットする前に編集されたコミットメッセージをクリーンアップするようにします。
git commit -eF "$(git rev-parse --git-dir)/COMMIT_EDITMSG" --cleanup=strip
参照元:man git-commit
:
-F <file>, --file=<file>
Take the commit message from the given file. Use - to read the
message from the standard input.
-e, --edit
The message taken from file with -F, command line with -m, and from
commit object with -C are usually used as the commit log message
unmodified. This option lets you further edit the message taken
from these sources.
--cleanup=<mode>
This option determines how the supplied commit message should be
cleaned up before committing. The <mode> can be strip, whitespace,
verbatim, scissors or default.
strip
Strip leading and trailing empty lines, trailing whitespace,
commentary and collapse consecutive empty lines.
...
FILES
$GIT_DIR/COMMIT_EDITMSG
This file contains the commit message of a commit in progress. If
git commit exits due to an error before creating a commit, any
commit message that has been provided by the user (e.g., in an
editor session) will be available in this file, but will be
overwritten by the next invocation of git commit.
(gitバージョン2.39.2でテスト済み)