如何修改Git仓库所有提交的用户信息?解决SmartGit授权限制问题
彻底修改Git仓库所有提交的用户信息
方法一:用git filter-repo(推荐,更稳定可靠)
git filter-repo是官方推荐替代git filter-branch的工具,处理历史改写更彻底,不容易遗漏。
- 确保你的Git环境已经安装git filter-repo(部分新版Git自带,若没有可通过系统包管理器安装)
- 执行以下命令,强制把所有提交的作者、提交者信息统一替换成你的目标信息:
git filter-repo --commit-callback ' commit.author_name = b"你的新名字" commit.author_email = b"你的新邮箱" commit.committer_name = b"你的新名字" commit.committer_email = b"你的新邮箱" '
这个命令会遍历仓库所有提交,不管原来的作者/提交者信息是什么,全部替换成你指定的新信息。
方法二:改进版git filter-branch命令
如果习惯用git filter-branch,之前的命令只针对单个旧邮箱,没法覆盖你6个不同的历史邮箱。直接用下面的命令,跳过旧邮箱判断,强制统一所有提交的用户信息:
git filter-branch --env-filter ' export GIT_AUTHOR_NAME="你的新名字" export GIT_AUTHOR_EMAIL="你的新邮箱" export GIT_COMMITTER_NAME="你的新名字" export GIT_COMMITTER_EMAIL="你的新邮箱" ' --tag-name-filter cat -- --branches --tags
验证修改结果
修改完后,执行以下两个命令确认所有用户信息已统一:
# 检查所有唯一的作者信息 git log --format='%aN <%aE>' | sort -u # 检查所有唯一的提交者信息 git log --format='%cN <%cE>' | sort -u
如果输出都只有你的新名字和邮箱,说明修改彻底。
后续操作
因为改写了仓库历史,如果你之前推送到过远程仓库,需要强制推送(私有仓库且只有你使用,不会有协作冲突):
git push --force --all git push --force --tags
之后重新在SmartGit中加载仓库,就能正常使用个人爱好许可证了。
内容的提问来源于stack exchange,提问作者Blackmyre
相关产品推荐
相关产品推荐

