Feng's Daily

Github用户识别机制

前段时间有朋友遇到了一些github提交的问题,我做了一点小的调查,就在这里记录一下吧。

首先问题有三个:

  • 所有“鬼栈”的 commits 都没有被记在 contributions 里;
  • 添加 email 之后,历史记录中,Huxpro 是被识别为一个用户(可以单独看 commit,看 profile),但鬼栈不是;
  • Update README.md 之后,全部用户被修正了。
  1. “鬼栈”的 commits 没有计入,Github help 中在 Setting your email in Git 中,有说明。

    Make sure that the email address you set in your local Git configuration has been added to your GitHub account’s email settings. After adding your email, commits that used that email address will automatically be counted in your contributions graph. There is no limit to the number of email addresses you can add to your account.

    因为你的git config中的email没有添加到 Github 账户中,在你添加 email 以后,过去使用这个email的commit将会自动计数。

  2. 这个来看 Github help 的 Why are my commits linked to the wrong user?

    这里说明这是 Github 的一种报错的机制。
    里面有三种情况:

    • 未识别的作者(有 email 地址):这时候你需要添加 email 地址到你的 Github 账户中去,这样就是之前说的,会自动识别。
    • 未识别的作者(无email地址):这其实是说你所使用的 email 地址已经用在了别的用户账号里,这时候你需要修改 git config 中的 email,并且在 Github 用户中添加该 email。但是这种情况,过去的 commit 在修改之后仍然无法被连接到正确的用户,这时候你需要通过脚本来修改提交记录(慎行)Changing author info
    • 不可用的 email:这说明你的 git config 里的 email 地址是一个空白或者没有按照 email 格式正确填写。这时候和2中做一样的操作就可以了,而且此处的 commit 历史记录也无法正确被连接,需要脚本来帮忙。
  3. 在 Setting your username in Git 中有一个小贴士

    Tip: You don’t have to use your real name—any name works. Git actually associates commits by email address; the username is only used for identification. If you use your email address associated with a GitHub account, we’ll use your GitHub username, instead of this name.

    Github 会通过你的 email 来识别用户,并且一般来说,还会用你的 Github username 替换掉你设置的 username。

    所以,当你更新 Update README.md 之后,根据 git config 中的 email 地址,Github 正确识别了 email,并且将你的“鬼栈”用户名替换为了 Huxpro。而根据 Github help,你修改了邮件地址,只会自动计入,而不会自动将用户名替换并正确连接。只有当你更新之后,因为 email 识别的问题,全部“鬼栈”都被替换成了你的用户名。

大概就是这样,详情可以去查阅 GitHub Help - GitHub Enterprise Documentation