我一直在关注如何更新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
答案 0 :(得分:1)
通过在命令行末尾使用HEAD
,您只更改了当前分支的历史记录。要更改所有分支的历史记录,请将HEAD
替换为-- --all
。
来自git filter-branch
文档:
< rev-list options> ...
git rev-list 的参数。这些选项包含的所有正面参考都被重写。您还可以指定
--all
等选项,但必须使用--
将它们与 git filter-branch 选项分开。