在我的GitHub存储库中,有一个打开拉取请求,用于将分支blTool-importFile-test
中的更改合并到master
。 new-files
上的几个提交意外地提交了无法访问的内部电子邮件地址,我想在合并到master
之前更正此问题。
请注意,此问题类似于“Change the author and committer name and e-mail of multiple commits in Git”。主要区别在于我只想在new-files
分支的一些特定提交中更改作者,而不是为整个项目重写历史记录。
是否可以更改我的blTool-importFile-test
分支的提交作者,而影响master
的历史记录?
答案 0 :(得分:2)
如果电子邮件地址为***@***.internal
,您似乎想要更改作者信息,您仍然可以使用以下方式:
$ git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "***@***.internal" ];
then
GIT_AUTHOR_NAME="new name";
GIT_AUTHOR_EMAIL="new email";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
这将搜索整个提交历史记录。
如果您不想搜索所有提交历史记录,还可以单独编辑某个提交作者信息。如果您想要更改commitA
的作者,则需要找到commitA
的父级(在commitA
之前提交),然后使用以下步骤:
git rebase -i <parent of commitA> -p
输入 i ,并将pick
改为edit
commitA
:edit commitA
。然后在交互式窗口中输入 Esc 和:wq
。
git commit --amend --author="name <email address>"
git rebase --continue
然后更改作者的其他提交使用相同的方法。
注意: -p
(--preserver-merges
)会将结构保持为合并。当处理合并提交的rebase可能存在冲突时,您应该像在合并中那样修改/保存冲突文件,然后使用git add .
和git rebase --continue
。