我可以在不影响我的`master`分支历史的情况下更改GitHub拉取请求中的提交作者吗?

时间:2017-04-24 23:59:40

标签: git github version-control pull-request git-rewrite-history

在我的GitHub存储库中,有一个打开拉取请求,用于将分支blTool-importFile-test中的更改合并到masternew-files上的几个提交意外地提交了无法访问的内部电子邮件地址,我想在合并到master之前更正此问题。

Commit history for <code>blTool-importFile-test</code>

请注意,此问题类似于“Change the author and committer name and e-mail of multiple commits in Git”。主要区别在于我只想在new-files分支的一些特定提交中更改作者,而不是为整个项目重写历史记录。

是否可以更改我的blTool-importFile-test分支的提交作者,而影响master的历史记录?

1 个答案:

答案 0 :(得分:2)

选项1

如果电子邮件地址为***@***.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

这将搜索整个提交历史记录。

选项2

如果您不想搜索所有提交历史记录,还可以单独编辑某个提交作者信息。如果您想要更改commitA的作者,则需要找到commitA的父级(在commitA之前提交),然后使用以下步骤:

git rebase -i <parent of commitA> -p

输入 i ,并将pick改为edit commitAedit commitA。然后在交互式窗口中输入 Esc :wq

git commit --amend --author="name <email address>"
git rebase --continue

然后更改作者的其他提交使用相同的方法。

注意: -p--preserver-merges)会将结构保持为合并。当处理合并提交的rebase可能存在冲突时,您应该像在合并中那样修改/保存冲突文件,然后使用git add .git rebase --continue