Git 批量仓库提交者信息
· 阅读需 2 分钟
使用 git filter-branch 来修改提交者信息
打开终端在你的 Git 项目的根目录中打开命令行工具。
执行git filter-branch
命令确保你的命令结构正确无误。下面是命令的完整形式,注意确保在你的 shell 中正确处理引号
git filter-branch --env-filter '
GIT_AUTHOR_NAME="sumingcheng"
GIT_AUTHOR_EMAIL="cjwdyzdyplxjg@gmail.com"
GIT_COMMITTER_NAME="sumingcheng"
GIT_COMMITTER_EMAIL="cjwdyzdyplxjg@gmail.com"
' --tag-name-filter cat -- --branches --tags
这个命令的部分,--env-filter
是用来设置新的环境变量,改变作者和提交者的姓名和邮箱。
查看输出在执行过程中,git filter-branch
会输出处理的信息,包括每个被重写的提交。注意观察是否有任何错误信息或警告。
确认变更
在使用了git filter-branch
命令之后,你可以使用以下命令来检查历史是否已经改变
git log --pretty=format:"%H %an %ae"
这个命令会列出所有提交的哈希值、作者名称和电子邮件地址,你可以通过这个输出确认信息是否已经更新。
常见问题
命令语法错误在某些 shell 环境下,命令的引号和空格可能需要特别注意。确保命令中的空格和引号都正确无误。
缓存问题有时候,Git 的一些客户端或者 GUI 工具会缓存旧的提交信息。尝试在命令行工具中直接查看提交历史,或者重启你的 Git 客户端。
分支保护如果你在使用某些托管服务(如 GitHub),请检查是否有分支保护规则阻止了历史的改变。
推送更改
如果本地的更改是正确的,而你想要将这些更改推送到远程仓库,你需要使用强制推送来覆盖远程的提交历史
git push origin --force --all
git push origin --force --tags
这将更新所有分支和标签的远程副本。
备份
在执行这类破坏性操作之前,总是好的做法备份你的仓库。如果事情出现意外,你可以使用备份来恢复原状。你可以简单地克隆整个仓库到另一个位置作为备份。