130

作为 Git 用户,我经常遇到这样的情况,即我需要以不适合--amend或不适合修复提交的方式重新处理一个或多个rebase -i提交。通常我会做类似的事情

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

我非常认真地对待明智的组合提交消息。它们通常包含较大的文本,其中包含更改的参考和理由。到目前为止,我对通过 unsorted 以及复制和粘贴过程来恢复我的旧提交消息的漫长过程感到非常git reflog恼火git log

有没有更好的方法来解决这个问题?如果我包含多个提交,它会如何?

编辑:经过一番思考,我认为我正在寻找一些类似于 git stash的功能,用于不适合修复/修改提交的提交消息。

4

4 回答 4

176

在 a 之后git reset,这个单线可以做到:

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

甚至更短:

git commit -C HEAD@{1}

您可以使用@user2718704提供的其他选项。

于 2014-09-19T09:15:23.020 回答
50

运行“git commit”命令时,您必须检查以下选项,

要重复使用,

--reuse-message=<commit>

要编辑重用,

--reedit-message=<commit>

换作者,

--reset-author
于 2013-08-26T19:18:07.740 回答
11

如果您可以破解,修复,破解然后运行,为什么要重置git commit --amend --no-edit;因此,保留您的原始提交消息。

要使其适用于多个提交,只需使用您的最新更改创建一个临时提交,然后使用交互式 rebase 将先前的提交(包含良好的提交消息)压缩为新的临时提交,保留旧提交的提交消息。

于 2013-05-31T13:25:57.617 回答
6

您可以考虑git commit --reset-author -c <commit>,通过编辑和当前时间重用提交消息。

于 2013-06-02T13:10:05.213 回答