如何在合并分支中为Git提交更新作者?

时间:2018-06-06 21:45:06

标签: git

我一直在关注如何更新Git中提交作者的various指南,但我还没有设法为之前合并的分支更新作者。

以下是提交历史记录的内容:

A - B - C - D - E - F - G
         \ 1 - 2 - 3 - 4 - 5 - 6... 

到目前为止,我已成功重写了顶级分支的作者。虽然它不容易找到:在像Gitlab这样的东西中,如果你查看提交C然后按照父提交的链接几次,你最终会找到提交,其中作者没有在提交3中更新, 4,5等。

我如何更新这些?

我为更新大多数提交而运行的脚本是:

git filter-branch -f --commit-filter '
        if [ "$GIT_AUTHOR_NAME" = "OLD-USER" ];
        then
                GIT_COMMITTER_NAME="NEW-USER";
                GIT_AUTHOR_NAME="NEW-USER";
                GIT_COMMITTER_EMAIL="NEW-EMAIL";
                GIT_AUTHOR_EMAIL="NEW-EMAIL";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

修改

感谢Greg Hewgill's回答,下面的脚本修复了它

git filter-branch -f --commit-filter '
        if [ "$GIT_AUTHOR_NAME" = "OLD-USER" ];
        then
                GIT_COMMITTER_NAME="NEW-USER";
                GIT_AUTHOR_NAME="NEW-USER";
                GIT_COMMITTER_EMAIL="NEW-EMAIL";
                GIT_AUTHOR_EMAIL="NEW-EMAIL";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' -- --all

1 个答案:

答案 0 :(得分:1)

通过在命令行末尾使用HEAD,您只更改了当前分支的历史记录。要更改所有分支的历史记录,请将HEAD替换为-- --all

来自git filter-branch文档:

  

< rev-list options> ...

     

git rev-list 的参数。这些选项包含的所有正面参考都被重写。您还可以指定--all等选项,但必须使用--将它们与 git filter-branch 选项分开。