我最近在一个公共仓库中fork了、提交了代码并发起了一个pull request,但我不是这个仓库的协作者。我的pull request还没有被合并。
检查我的提交记录后,我发现我使用了错误的作者名称,我想要修复它。我尝试进行rebase操作,效果很好:
git rebase -i HEAD~7
接着,我编辑
了所有相关提交,并且根据这篇回答,成功地更改了提交的作者。
git commit --amend --author "James <email@example.com>" --no-edit && \
git rebase --continue
到目前为止,一切都很好,但我注意到这会将提交时间更改为当前时间。我想保留以前的时间戳。我尝试遵循这个答案,但是
filter-branch
似乎已经更改了整个存储库的哈希值。我可能不应该强制推送这个更改。即使我这样做了,我的拉取请求也可能无法合并。因此,我尝试寻找一种在分支上运行
filter-branch
的方法,但我找不到任何东西。我尝试过:git filter-branch --env-filter 'GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE; export GIT_COMMITTER_DATE' HEAD~7
但这并不起作用。它以错误信息退出:
您想重写哪个引用?
我应该尝试做什么?这可行吗?
我应该查看rebase的--committer-date-is-author-date
标志吗?那是什么意思?
--committer-date-is-author-date
可以实现你想要的功能。但是,它与git rebase
的--interactive
选项不兼容。你尝试过不指定--interactive
吗? - jpaugh-i
开关即可。如果你担心分支被破坏,可以始终使用新分支,或者在变基后执行git reset my-feature-branch@{1}
撤消变基。 - jpaughcommit --amend
。现在我收到消息:First, rewinding head to replay your work on top of it
再次感谢您的帮助! - James Taylor-i
选项),然后再按照上面所示的方法进行一次变基。 - jpaugh