Git:如何在'git reset'之后重用/保留提交消息?

ben*_*lor 88 git commit-message commit git-rebase git-reset

作为Git用户,我经常遇到这种情况,我需要以一种不适合--amend或不适合rebase -ifixup提交的方式重做一个或多个提交.通常我会做类似的事情

git reset HEAD~1
# hack, fix, hack
git commit -a
# argh .. do I need to retype my message?
Run Code Online (Sandbox Code Playgroud)

我认为合理的撰写提交消息非常严重.它们通常包含较大的文本,其中包含对更改的引用和理由.到目前为止,我对通过未排序git reflog,git log复制和粘贴过程恢复旧提交消息的漫长过程感到非常恼火.

有没有更好的解决这个问题?如果我包含多个提交,它会怎么样?

编辑:经过一番思考之后,我认为我正在寻找的是一些git stash- like功能,用于提交消息,其中fixup/revision提交不合适.

ibi*_*man 117

经过一次git reset,这个单线可以做到:

git commit --reuse-message=HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

甚至更短:

git commit -C HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

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

  • 重置后,将设置ORIG_HEAD。我发现`git commit --reuse-message = ORIG_HEAD`是最清楚的。 (11认同)
  • 更短:`git commit -C @@ {1}` (4认同)
  • 这是reflog的绝佳用法 (2认同)

小智 38

运行"git commit"命令时,您需要检查以下选项,

重用,

--reuse-message=<commit>
Run Code Online (Sandbox Code Playgroud)

要在重用时进行编辑,

--reedit-message=<commit>
Run Code Online (Sandbox Code Playgroud)

要改变作者,

--reset-author
Run Code Online (Sandbox Code Playgroud)


mar*_*t1n 8

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

为了使它适用于多次提交,只需使用最新的更改创建一个临时提交,然后使用交互式rebase来压缩先前的提交(包含良好的提交消息)和新的临时提交,保留旧提交的提交消息.

  • 在进行交互式rebase时,您甚至可以使用`fixup`指令声明稍后的提交是为了修复先前的提交,它将自动使用原始提交消息来丢弃来自fixup提交的消息. (2认同)

Joe*_*Joe 5

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