6

使用できることはわかっていますgit commit --amend --file=path-to-my-new-messageが、これにより段階的な変更も修正されます。もちろん、スタッシュして後で適用してスタッシュをドロップすることもできますが、ステージングされた変更 (およびユーザーの操作) をコミットせずに HEAD コミット メッセージを変更するためのより迅速な解決策はありますか?

4

3 に答える 3

7

新しいコミット メッセージをファイルに書き込んで (たとえば) 、たとえばmsg.txtを使用できます。git commit-tree

new_head=$(git commit-tree HEAD^{tree} -p HEAD^ <msg.txt)

git reset --soft $new_head

これは、修正しようとしているコミットに 1 つの親があることを前提としています-p HEAD^2 -p HEAD^3 ...

ちょっと醜くてレベルが低い。変更を隠して、ストレートな「修正」を使用する方が簡単な場合があります。

git stash
git commit --amend
git stash pop --index

@Jefromi が示唆するように、修正操作に一時インデックス ファイルを使用することもできます。

GIT_INDEX_FILE=.git/tmpidx git reset
GIT_INDEX_FILE=.git/tmpidx git commit --amend
rm .git/tmpidx
于 2011-12-27T16:32:19.007 に答える
2

パスが指定されていないマニュアルページによるとgit commit --amend --only、仕事をするはずですが、これは私にとってはうまくいきません。回避策として、ファイルを一時的に追加して再度削除し、2 回修正することができます。

touch tmp
git add tmp
git commit --amend -m "new message" tmp
git rm tmp
git commit --amend -m "new message" tmp
于 2011-12-28T14:42:07.607 に答える
0

git-rebaseで開いたエディターでに変更git rebase -i HEAD^できます。この後、新しいコミットメッセージの入力を求められます。pickreword

于 2011-12-27T16:16:51.420 に答える