如何自动`git commit amend` to * append * to last commit message?

时间:2017-03-17 12:25:26

标签: git

尝试通过在上一条消息的末尾附加一个字符串来编辑上次提交消息。

尝试从CI服务器执行此操作,因此我正在寻找一种不需要任何交互式人工干预的自动解决方案

4 个答案:

答案 0 :(得分:7)

如果要在不打开编辑器的情况下修改当前提交并更改提交消息,可以使用-m标志提供消息。例如:

git commit --amend -m"This is the commit message."

将使用作为新消息给出的消息修改当前HEAD:

% git log
commit adecdcf09517fc4b709fc95ad4a83621a3381a45
Author: Edward Thomson <ethomson@edwardthomson.com>
Date:   Fri Mar 17 12:29:10 2017 +0000

    This is the commit message.

如果你想追加邮件,你需要获取前一张邮件:

OLD_MSG=$(git log --format=%B -n1)

然后您可以使用它来设置新消息,使用多个-m来设置多行:

git commit --amend -m"$OLD_MSG" -m"This is appended."

将给定消息附加到原始文件:

% git log
commit 5888ef05e73787f1f1d06e8f0f943199a76b70fd
Author: Edward Thomson <ethomson@edwardthomson.com>
Date:   Fri Mar 17 12:29:10 2017 +0000

    This is the commit message.

    This is appended.

答案 1 :(得分:2)

一种方法是使用GIT_EDITOR环境变量并修改提交:

# $1 is the file with the commit message to be amended
GIT_EDITOR="echo 'appended line' >> $1" git commit --amend

此变量将设置用于该操作的编辑器。基本上它会调用变量中的命令集,并使用提交消息传递文件

答案 2 :(得分:1)

git loggit commit --amend结合使用:

APPEND_MESSAGE="foo bar baz"
PREVIOUS_MESSAGE="$(git log --format=%B -n 1)"
git commit --amend -m "$PREVIOUS_MESSAGE" -m "$APPEND_MESSAGE"

答案 3 :(得分:0)

这是我一直用来修改最后一次提交的一行

git commit --amend -C head

-C表示“获取现有的提交对象,并在创建提交时重用日志消息和作者信息(包括时间戳)。”

如果您想进行其他更改,请使用-c代替

-c表示“与-C一样,但是使用-c调用编辑器,以便用户可以进一步编辑提交消息。”