关于git:如何更改旧(本地)提交的消息?


How to change the message of an old (local) commit?

本问题已经有最佳答案,请猛点这里访问。

我的承诺如下:

1
2
3
4
5
6
7
8
9
10
11
12
alex@alex-M52AD-M12AD-A-F-K31AD:~/node/project$ git log
commit 050e4417634300e724b8e0c29bb8b7a240a9a996
Author: alexcheninfo
Date:   Fri Feb 12 12:55:38 2016 +0800

    Rename documents

commit 637bd5ac976118d7e0fb3bf5f2bab950ce0ebb66
Author: alexcheninfo
Date:   Fri Feb 12 11:29:01 2016 +0800

    Make sidenav a component

我想更改Make sidenav a component的提交消息。我曾想过使用git -ammend,但我认为它只能用于更改最后一次提交的消息?


交互式钢筋网通常是最简单的方法:git rebase -i 637bd5ac^

这将在每次提交时打开编辑器,因为在一行中提到了提交。对于每个提交,您可以选择修改它的方式;选择(保持原样)、编辑、改写(仅编辑提交消息)、挤压(将该提交与前面的提交合并为一个提交消息和一个提交消息)或修复(如挤压,但忽略第二个提交消息)。您还可以在执行此操作时重新排序或删除提交。

对于您的问题,您希望为所讨论的提交选择"改写",然后您将有机会编辑消息。


I want to change the commit message of Make sidenav a component.
I thought of using git commit -ammend but I think it can only be used to change the message of the last commit?

号江户十一〔一〕号

这只会更新您的HEAD,这是最新的提交消息。如果您希望更新链中的其他消息,您有几个选项:

交互钢筋=git rebase -i HEAD~X

找到您想要的提交,将pick改为e(edit),然后保存并关闭文件。

现在,当git停止所需的提交时,使用git commit --amend进行更改。

江户十一〔七〕号

这里也没有什么选择。git filter-branch对提交集进行循环,并按照您告诉它的方式更新它们。

例如,可以使用此行更新所需的字符串:

1
git filter-branch -f --msg-filter 'sed"s/...//g"' -- --all

或者这个脚本(这个脚本修改提交者数据)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Loop over all the commits and use the --commit-filter
# to change only the email addresses

git filter-branch --commit-filter '

    # check to see if the committer (email is the desired one)
    if ["$GIT_COMMITTER_EMAIL" ="<Old Email>" ];
    then
            # Set the new desired name
            GIT_COMMITTER_NAME="<New Name>";
            GIT_AUTHOR_NAME="<New Name>";

            # Set the new desired email
            GIT_COMMITTER_EMAIL="<New Email>";
            GIT_AUTHOR_EMAIL="<New Email>";

            # (re) commit with the updated information
            git commit-tree"$@";
    else
            # No need to update so commit as is
            git commit-tree"$@";
    fi'
HEAD


git commit-amend只能更改最后一次提交。您应该使用git-rebase-i在提交历史记录中选择和编辑提交。