web-dev-qa-db-ja.com

Git:「git reset」後にコミットメッセージを再利用/保持する方法は?

私はGitユーザーとして定期的にこの状況に遭遇します。つまり、--amendまたはrebase -iwithフィックスアップコミットに適合しない方法で1つ以上のコミットをやり直す必要があります。通常、私は次のようなことをします

git reset HEAD~1
# hack, fix, hack
git commit -a
# argh .. do I need to retype my message?

私は賢明な合成コミットメッセージを非常に深刻に受け止めています。通常、それらには変更の参照と正当化を伴うより大きなテキストが含まれます。これまで、ソートされていないgit refloggit logおよびコピーアンドペーストプロセスを介して古いコミットメッセージを回復するための長いプロセスに非常に悩まされています。

これに取り組む方が良いですか?そして、私のコミットが複数のコミットで構成されている場合、どのようになりますか?

編集:これについて少し考えた後、私が探しているのはいくつかだと思いますgit stash-fixup/amend commitsが適切でないコミットメッセージのための機能。

83
Benjamin Schmid

git resetの後、このワンライナーで実行できます。

git commit --reuse-message=HEAD@{1}

またはさらに短い:

git commit -C HEAD@{1}

@ user2718704 で指定された他のオプションを使用できます。

109
ibizaman

「git commit」コマンドを実行するときは、次のオプションを確認する必要があります。

再利用するには、

--reuse-message=<commit>

再利用時に編集するには、

--reedit-message=<commit>

著者を変更するには、

--reset-author
35
user2718704

ハッキング、修正、ハッキングしてからgit commit --amend --no-edit;したがって、元のコミットメッセージを保持します。

複数のコミットで機能するようにするには、最新の変更で一時的なコミットを作成し、インタラクティブリベースを使用して、以前のコミット(良いコミットメッセージを含む)を新しい一時的なコミットで押しつぶし、古いコミットのコミットメッセージを保持します。

7
mart1n

git commit --reset-author -c <commit>、編集および現在の時刻でコミットメッセージを再利用します。

2
Joe