git - 我可以在 GitHub pull 请求中更改提交的作者而不影响 `master` 分支的历史记录吗?

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

在我的 GitHub 存储库上,有一个开放的 pull 请求,用于将分支 blTool-importFile-test 中的更改 merge 到 master 中。 new-files 上的多次提交是通过无法访问的内部电子邮件地址意外提交的,我想在 merge 到 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

如果电子邮件地址是***@***.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,然后更改pickedit对于 commitA :edit commitA 。然后输入 Esc:wq在交互窗口中。

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

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

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

关于git - 我可以在 GitHub pull 请求中更改提交的作者而不影响 `master` 分支的历史记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43599452/

相关文章:

Git - 多个存储库?

具有共享代码的多个项目的 GIT 版本控制设置

macos - Mac OS X | Bash .bash_profile 未更新 PS1

git - 如何知道合作者的总提交

windows - git diff 和 git difftool 什么都不做也不给出任何输出

git - 如何在不使用重置的情况下将 Git 存储库及其 Github 远程恢复到之前的提交?

linux - 无法将 ssh key 复制到剪贴板

git - 我应该使用 SVN 还是 Git?

git - 在 git 或 tortoisegit 中撤消还原

git - 当特定文件夹更改时在 Jenkins 中构建触发器