如题

现象

git 贡献者,在码云上显示的跟实际登录认证账号不一致。

原因

如果设置了全局用户名和邮箱为 A,虽然提交代码的时候,登录认证账号是 B,最后在码云上查看,贡献者仍然显示为 A,这就导致认证账号与代码贡献者不一致的现象。

全局用户名和邮箱是本地 git 客户端的变量,可配置,不随 git 库而改变。gitee 和 github 是按邮箱来统计贡献者(Contributors)的。

查看全局用户名和邮箱

1
2
3
4
5
6
$ git config user.name
AndyChen

AndyChen@AndyChen MINGW64 /c/temp
$ git config user.email
1614923608@qq.com

这是我之前设置的,最近,我在 gitee 上重新注册了一个账号(为了与 github 的账号用同样的邮箱),相关项目已经迁移至新账号,新账号下的项目都没有单独配置用户名和邮箱。

我发现最近的提交,都统计到之前的账号了,而且,家里电脑提交的,和在办公室电脑上提交的,还都不一样(我承认,我有多个 gitee 账号^()^ ^_^),甚是纳闷,后来才想起来有全局配置这回事儿。

解决办法

为项目单独配置用户名和邮箱

  1. 到项目根目录下,修改 .git 目录下的 config 文件,在末尾添加:

    1
    2
    3
    [user]
    name = AndyChen
    email = andy@lovesofttech.com

    .git 目录是隐藏目录,需要设置隐藏目录可见。

  2. 用命令
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AndyChen@AndyChen MINGW64 /c/workspace/esDemo (master)
    $ git config user.name 'AndyChen'

    AndyChen@AndyChen MINGW64 /c/workspace/esDemo (master)
    $ git config user.email 'andy@lovesofttech.com'

    AndyChen@AndyChen MINGW64 /c/workspace/esDemo (master)
    $ git config user.email
    andy@lovesofttech.com

该命令执行之后,会在 .git 目录下的 config 文件,在末尾添加相关配置内容,跟直接修改 config 文件的效果是一样的。

修改全局用户名和邮箱

1
2
3
4
5
AndyChen@AndyChen MINGW64 /c/workspace/esDemo (master)
$ git config --global user.name 'AndyChen'

AndyChen@AndyChen MINGW64 /c/workspace/esDemo (master)
$ git config --global user.email 'andy@lovesofttech.com'

跟单独给项目配置用户名和邮箱的区别是,这里加了全局选项 --global

再到一个没有项目文件的目录查看配置情况:

1
2
3
4
5
6
7
8
9
# 全局配置修改之前的配置
AndyChen@AndyChen MINGW64 /c/temp
$ git config user.email
1614923608@qq.com

# 全局配置修改之后的配置
AndyChen@AndyChen MINGW64 /c/temp
$ git config user.email
andy@lovesofttech.com

如上,说明全局配置已经生效了。