我可以在 GitHub 拉取请求中更改提交的作者而不影响我的 `master` 分支的历史吗?
Can I change the author of commits in a GitHub pull request without affecting history of my `master` branch?
在我的 GitHub 存储库中,有一个开放的拉取请求,用于将分支 blTool-importFile-test
的更改合并到 master
。 new-files
上的几次提交是意外地使用无法访问的内部电子邮件地址提交的,我想在合并到 master
.
之前更正此问题
请注意,此问题与“Change the author and committer name and e-mail of multiple commits in Git”类似。主要区别在于我只想更改 select 分支特有的少数提交的作者,而不是重写整个项目的历史。
是否可以更改我的 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
如果不想在所有commit history中搜索,也可以单独编辑某个commit author信息。比如你想更改 commitA
的作者,你需要找到 commitA
的父级(在 commitA
之前提交),然后使用以下步骤:
git rebase -i <parent of commitA> -p
输入 i,然后将 pick
更改为 edit
for commitA
: edit commitA
。然后在交互window.
中输入Esc和:wq
git commit --amend --author="name <email address>"
git rebase --continue
然后使用相同的方法更改其他提交的作者。
注意: -p
(--preserver-merges
) 将保留结构作为合并。而rebase在处理merge commit的时候,可能会有冲突,你应该和merge一样modify/save冲突文件,然后使用git add .
和git rebase --continue
.
在我的 GitHub 存储库中,有一个开放的拉取请求,用于将分支 blTool-importFile-test
的更改合并到 master
。 new-files
上的几次提交是意外地使用无法访问的内部电子邮件地址提交的,我想在合并到 master
.
请注意,此问题与“Change the author and committer name and e-mail of multiple commits in Git”类似。主要区别在于我只想更改 select 分支特有的少数提交的作者,而不是重写整个项目的历史。
是否可以更改我的 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
如果不想在所有commit history中搜索,也可以单独编辑某个commit author信息。比如你想更改 commitA
的作者,你需要找到 commitA
的父级(在 commitA
之前提交),然后使用以下步骤:
git rebase -i <parent of commitA> -p
输入 i,然后将 pick
更改为 edit
for commitA
: edit commitA
。然后在交互window.
:wq
git commit --amend --author="name <email address>"
git rebase --continue
然后使用相同的方法更改其他提交的作者。
注意: -p
(--preserver-merges
) 将保留结构作为合并。而rebase在处理merge commit的时候,可能会有冲突,你应该和merge一样modify/save冲突文件,然后使用git add .
和git rebase --continue
.