Bor*_*Not 6 git github git-filter-branch
我最近使用以下命令替换了所有本地提交中的作者,提交者和电子邮件:
git filter-branch -f --env-filter '
if [ "$GIT_COMMITTER_NAME" = "oldname" ];
then
GIT_COMMITTER_NAME="newname";
GIT_COMMITTER_EMAIL="newaddr";
GIT_AUTHOR_NAME="newname";
GIT_AUTHOR_EMAIL="newaddr";
fi
if [ "$GIT_AUTHOR_NAME" = "oldname" ];
then
GIT_COMMITTER_NAME="newname";
GIT_COMMITTER_EMAIL="newaddr";
GIT_AUTHOR_NAME="newname";
GIT_AUTHOR_EMAIL="newaddr";
fi
' -- --all
Run Code Online (Sandbox Code Playgroud)
更新在本地立即显现(例如在我的SourceTree环境中).但是,在将修改后的存储库强制推送到GitHub之后......
git push -f origin master
Run Code Online (Sandbox Code Playgroud)
......两个单独的项目顽固地拒绝让他们的提交者和作者更新:Gemfile.lock文件和一个Views目录.
还请注意:
这是我第二次在此存储库上执行此类操作.我相信我第一次遇到这样的问题.
在存储库中搜索我的旧名称...
$ find . "<oldname">
Run Code Online (Sandbox Code Playgroud)... 确实产生了一堆结果,这意味着oldname仍然潜伏在许多存储库文件中 - 包括在GitHub和本地都出现更新的文件.
我的问题是:如何更改GitHub上两个"顽固"文件的提交者/作者?
使用git filter-branch后,git仍然保留refs/original中repo历史的备份副本.这样,如果你用过滤器分支搞砸了,你可以在必要时恢复.一旦确定一切顺利,您可以删除备份的参考:
git update-ref -d refs/original/refs/heads/master
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它仍然需要额外的提交github来反映变化.我将在自述文件,提交和推送中添加一个空格或内容...之后,github在项目页面上反映了正确的作者.
| 归档时间: |
|
| 查看次数: |
3755 次 |
| 最近记录: |