无法以testuser身份执行Git提交与推送的问题求助
问题分析与解决办法
从你给出的错误提示里能看到关键问题:
remote: Commit 1234567890 was committed by testuser <testuser@email.com
这里的邮箱格式不完整,缺少了右尖括号>,这才是Bitbucket的“Verify Committer”钩子拒绝推送的核心原因。
第一步:确认本地提交的信息格式
先检查出问题的提交详情,验证格式错误:
git show 1234567890
查看输出里的Author和Committer字段,确认邮箱是否是testuser <testuser@email.com>(必须用完整的<>包裹邮箱)。
第二步:修正历史提交的信息格式
你之前用的git filter-branch命令逻辑没问题,重新执行以下命令修正所有分支和标签的提交信息:
git filter-branch --env-filter ' export GIT_AUTHOR_NAME="testuser" export GIT_AUTHOR_EMAIL="testuser@email.com" export GIT_COMMITTER_NAME="testuser" export GIT_COMMITTER_EMAIL="testuser@email.com" ' --tag-name-filter cat -- --branches --tags
执行完成后,再用git show检查提交信息是否已修正为完整格式。
第三步:修正全局Git配置的错误
你之前的配置命令存在明显错误:重复将user.name设置为邮箱,正确的全局配置应该分开设置名称和邮箱:
git config --global user.name "testuser" git config --global user.email "testuser@email.com"
不需要额外配置commit.name和commit.email,Git默认会使用user.name和user.email作为提交的作者/提交者信息。
第四步:重新推送修正后的分支
确认所有提交的信息格式正确后,强制推送分支(注意:如果是多人协作分支,需先确认无其他人同时修改):
git push origin main --force
无需添加--no-verify,修正提交信息后钩子验证自然能通过。
额外说明
删除Windows凭据管理器的Git凭据是针对身份验证的操作,和当前提交者验证问题无关,但如果后续遇到推送时的身份验证错误,该操作依然有效。
内容的提问来源于stack exchange,提问作者bocodes
相关产品推荐
相关产品推荐

