有没有一种方法可以在git提交中重复使用先前的注释?

26

偶尔我会进入故障排除模式,并提交/推送一些小但是分离的commit,带有类似于“在Heroku部署期间排除<某些东西>问题”的注释。我想每次提交时都使用相同的注释而不必重新输入。这可能吗?


Visual Studio Code 允许您在版本 1.51.0 中向上箭头到先前的提交消息。 - Seth
4个回答

42

来自git-commit(1)命令的文档:

-C <commit>
--reuse-message=<commit>
Take an existing commit object, and reuse the log message and the authorship 
information (including the timestamp) when creating the commit.

-c <commit>
--reedit-message=<commit>
Like -C, but with -c the editor is invoked, so that the user can further edit 
the commit message.

使用以下方式是可能的:

  git commit --reuse-message=HEAD

更新:

您可能还需要使用--reset-author选项,

--reset-author
When used with -C/-c/--amend options, declare that the authorship of the 
resulting commit now belongs of the committer. This also renews the author 
timestamp.

啊,这不是从我的最新提交注释中提取的吗? - Seth
仔细思考一下...如果我在本地输入git commit -a --reuse-message=HEAD,它怎么可能拉取除了我最近的提交评论以外的任何东西?另一个团队成员的评论如何通过该命令和上下文悄悄地混入其中? - Seth
抱歉我误解了你的问题,是的,它会根据你的HEAD指向的位置从你最近的提交消息中提取。如果在新评论和上一个评论之间有其他评论干扰,则会采用该评论的消息。 - Ahmed Siouani
您可以将给定的提交哈希用作--reuse-message选项的值。祖先到HEAD也是可达的。 - Ahmed Siouani

19

起初,我回答道:

我猜 git commit --reuse-message=HEAD 可以做到这一点。

然后我想这不是你想要的,于是删除了它。然后生活赶上了我,AFK了几个小时。无论如何,尽管已经有一个被接受的答案,但我会建议:

$ git config alias.troubleshoot '!troubleshoot() { git add -u && git commit -m "Troubleshooting the $1 during deployment to Heroku."; }; troubleshoot'

并且您可以按照以下方式使用它:

  1. 修改现有文件
  2. (最终添加未跟踪的文件)
  3. git troubleshoot foo

将使用"在部署到Heroku期间排除故障foo "作为提交消息提交更改(和最终新文件)。


1
这是一个更安全的解决方案,也是解决更广泛问题的方案,如何轻松地重复使用常见的git提交评论?使用参数可以确保日志不会被填满无用的注释。请参阅别名了解更多信息。 - Seth

13

如果您想要修改提交信息,请另外添加 --edit 参数。 - pcworld

2
我不确定如何使一组 git 提交使用您输入的最后一个 git 注释,但是您可以设置默认提交信息。 只要完成了需要使用该消息的所有提交,就可以取消默认提交消息,这可能会起作用。
以下是设置默认提交消息的方法。 首先,在文件中输入所需的提交消息,例如称其为~/LastCommitMessage.txt。 然后,像这样指定此消息作为您的默认(全局)提交消息:
$ git config --global commit.template ~/LastCommitMessage.txt

您可以通过不使用 --global 并使用其他替代方法来缩小范围。

您可以通过打开位于主目录中的 .gitconfig 文件轻松访问所有 git 设置。打开该文件并删除上述设置,以便在完成所有提交后取消设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接