当我尝试从Linux环境下的IntelliJ Idea将我的git仓库提交推送到gerrit远程仓库时,我会遇到以下错误:
remote: ERROR: committer email address ***** [K
remote: ERROR: does not match your user account.[K
即使我已经将设置更改为git和gerrit的正确设置(我可以在控制台上看到这一点:git config -l
),它仍然选择旧的“错误”电子邮件。
可能出了什么问题?
当我尝试从Linux环境下的IntelliJ Idea将我的git仓库提交推送到gerrit远程仓库时,我会遇到以下错误:
remote: ERROR: committer email address ***** [K
remote: ERROR: does not match your user account.[K
即使我已经将设置更改为git和gerrit的正确设置(我可以在控制台上看到这一点:git config -l
),它仍然选择旧的“错误”电子邮件。
可能出了什么问题?
你需要重新配置你的电子邮件
$ git config user.email <your email>
$ git commit --amend --reset-author
git commit --amend
更新你的最后一次提交
git log
命令检查哪些提交记录没有正确的作者信息,然后运行git rebase -i <要修改的提交记录>^
命令,这样你就可以使用git commit --amend --author "新作者姓名 <email@address.com>"
(或--reset-author)来修正作者信息并继续变基。一旦所有提交记录都被修复,你就可以推送(commit)更改。 - Frederic Henri[user]
name = username
email = username@domaim.com
请正确输入您的用户名和电子邮件。除非您更改,否则此信息将永久保留。
当我尝试从Git向Gerrit推送时,遇到了相同的问题。可能的冲突是因为代码是从git的登录id克隆的,而在尝试推送时,它正在与Gerrit凭据进行交叉验证。由于这两者不同,所以会出现冲突。 通过运行以下两个命令解决了问题:
当我们公司的电子邮件地址更改时,我遇到了同样的错误,但对我来说很容易解决:
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
[user]
name = Your Correct Name
email = your-correct-email@example.com
git commit --amend --reset-author
git push
PS:这是在Gerrit服务器上
如Frédéric Henri提到的那样, 您必须通过 git config user.email
或直接通过编辑您repo文件夹中的 \.git\config
文件来正确配置您的电子邮件。
一个可能被忽视的重要事情是,您必须更新所有包含错误电子邮件的以前提交。Git会抱怨电子邮件模式,但不会提及哪个提交有问题。
您可以使用 git rebase
或 git reset
,然后一旦提交,您就可以成功推送!