作为 Git 用户,我经常遇到这种情况,我需要以一种不适合
--amend
或 rebase -i
修复提交的方式重新处理一个或多个提交。通常我会做类似的事情
git reset HEAD~1
# hack, fix, hack
git commit -a
# argh .. do I need to retype my message?
我非常重视合理的组合提交消息。它们通常包含较大的文本,其中包含更改的参考和理由。到目前为止,我对通过未排序的
git reflog
、git log
以及复制和粘贴过程恢复旧提交消息的漫长过程感到非常恼火。
有更好的方法来解决这个问题吗?如果我的提交包含多个提交,会怎么样?
编辑:经过一番思考后,我认为我正在寻找一些类似于 git stash 的功能,用于修复/修改提交不合适的提交消息。
经过
git reset
之后,这句台词就可以做到:
git commit --reuse-message=HEAD@{1}
或更短:
git commit -C HEAD@{1}
来自斯科特·雅各布森的评论:
复位后,ORIG_HEAD 被设置。我觉得
git commit --reuse-message=ORIG_HEAD
最清楚。
您可以使用@user2718704提供的其他选项。
运行“git commit”命令时,您必须检查以下选项,
重复使用,
--reuse-message=<commit>
要编辑重用,
--reedit-message=<commit>
要更改作者,
--reset-author
如果你可以破解、修复、破解然后运行
git commit --amend --no-edit
,为什么要重置?因此,保留您原来的提交消息。
要使其适用于多个提交,只需使用最新的更改创建一个临时提交,然后使用交互式变基来用新的临时提交压缩上一个提交(包含良好的提交消息),保留旧提交的提交消息.
您可以考虑
git commit --reset-author -c <commit>
,通过编辑和当前时间重用提交消息。
重置后,
ORIG_HEAD
已设置。之后,您可以执行:
git commit --reuse-message=ORIG_HEAD
基于@ScottJacobsen 对@ibizaman 的回答的评论。