我一直在GitHub
从我的 linux shell 对我的 repos 进行连续提交,它们在网站上很好地显示,就像它们应该的那样。唯一的问题是“您的贡献”部分没有显示任何最近的活动。我在 11 月的某一天有一个绿色方块,我不知道我是怎么得到的,但所有其他贡献都没有出现在日历中(但同样,它们确实 出现在他们的回购中。
我在这里错过了什么?
32 回答
对我来说,这个问题是由于我在我的 gitconfig 中使用不同电子邮件的工作计算机提交的。将我的工作电子邮件地址添加到我的 github 帐户并没有使过去的提交显示在摘要中,但是现在新的提交按应有的方式显示。
您可以找到用于存储库的电子邮件地址git config user.email
。
来自 git
我刚刚看过您对 GoTime2 存储库的贡献,您似乎一直在将提交推送到布局分支。
这些贡献没有出现的原因是我们只跟踪提交到存储库的默认分支或 gh-pages 分支的贡献:
一旦您的贡献被合并到默认页面或 gh-pages 中,您将在您创作它们的日期获得它们的信用。
所以在我的情况下,我必须将我的“布局”分支与“主”分支合并,才能看到“你的贡献”出现在日历中。
这是一个 Github 问题,有时它们的更新机制不起作用,它会变成“陈旧的缓存”。这没什么大不了的,只需向 support@github.com 发送电子邮件描述问题,他们会立即解决。
一个可能的原因:
提交是在分叉中进行的
分叉中的提交将不计入您的贡献。
https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/
这成功了!我刚用过$ git config user.email "my email address used on my git repo"
,效果很好。
“您必须使用登录 github 帐户时使用的相同电子邮件 ID 提交更改”
怎么解决:
- 使用以下命令更改所有存储库的全局电子邮件 ID。
git config --global user.email abc@xyz.com
- 或更改一个特定存储库的电子邮件 ID。从特定存储库内部运行以下命令
git config user.email abc@xyz.com
- 或者在存储库中打开 .git/config 文件并编辑
电子邮件 = abc@xyz.com 名称 = abc
其他原因可以在这里找到 https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/
确保您的本地电子邮件与帐户中的电子邮件完全相同。
转到终端并在要推送提交的文件夹中,运行:
git config --global user.email
#=> TRICULI.TO@MAIL.com
git config --system user.email
#=>
git config --local user.email
#=> triculito@mail.com
类似的事情发生在我身上。我帐户中的电子邮件是--global 中的电子邮件,但我的--local 略有不同,它没有'.'。
(在 Gmail 中,这些电子邮件之间没有区别,它们的工作方式完全相同)。
所以这通常是由于很多因素造成的,你必须访问这个GitHub 帮助
我发现的最常见的错误是:
- 本地计算机上未正确配置电子邮件。(您的笔记本电脑/个人电脑)。
- 分叉。
- 不使用默认或 gh-pages 分支进行提交。
我个人最近遇到了问题 1,为此我去了终端/cmd/cli并通过运行此命令在本地配置我的电子邮件地址
git config --global user.email yourname@email.address
完成后,尝试再次运行此配置,如下所示:
git config --global user.email
您应该能够看到:
yourname@email.address
如果这是正确的,那么您已经成功地为您的本地计算机配置了您的全局公共存储库。现在您的下一次提交将记入您的日历。
也许 Github 已经解决了这个问题。有一种简单的方法,去 github.com 邮箱设置:https ://github.com/settings/emails
个人设置 --> 电子邮件
您可以在那里添加电子邮件地址,并通过发送验证链接验证您的新电子邮件地址,然后您会发现您之前的提交都记录在“您的贡献”日历中。并且此电子邮件验证还可以让您接收来自 GitHub 的通知和密码重置。
您的新电子邮件地址将用于与帐户相关的通知(例如帐户更改和账单收据)以及任何基于 Web 的 GitHub 操作(例如编辑和合并)。
我在用于 iOS 开发的 Xcode 9 中遇到了同样的问题。
即使我在 Xcode 中进行了提交。“您的贡献”日历中没有任何贡献。
解决方案:
全局更改提交者名称和电子邮件
用于提交的电子邮件地址必须与您的 GitHub 帐户相关联。
在终端:
$ git config --global user.name "Full Name"
$ git config --global user.email "fullname@gmail.com"
另请参阅 GitHub 帮助:在 Git 中设置提交电子邮件地址
在我的许多提交发生后(新提交正确显示)并且只能通过从我的个人资料中删除电子邮件地址来显示它们然后重新添加相同的电子邮件地址。
这样做似乎解决了 GitHub 中的缓存问题。
原来我之前在 GitHub 上更改了我的电子邮件地址,我也忘了更改本地的。
我通过进行两次更改来解决它
- 我使用命令配置了我的本地机器
git config --global user.email "your github email"
main to master
我从使用 github 网站 @ https://github.com/your-username/your-repo-name/settings/branches更改了我的项目 repo 的默认分支
`
git config
即使配置了正确的电子邮件地址,我也不得不手动将我的电子邮件添加到 SourceTree 设置中。只有在这样做之后,GitHub 才开始将我的提交记录到我的贡献图中。
我遇到了同样的问题,原来是因为我本地 git 上的电子邮件与我的 GitHub 帐户上的电子邮件不匹配。
要更新本地计算机上的电子邮件:
git config --global user.email "your.email@email.com"
验证您的所有提交是否已在您的 github 上更新,如果没有,您可以通过单击提交并将“.patch”添加到提交 url 的末尾来检查单个提交以查看提交关联的电子邮件,如下所示:
https://github.com/username/repoName/commit/9fbe83f71cfc3503.patch
现在您所要做的就是将您看到的电子邮件添加到您的帐户中。(不需要验证)
再次检查提交,您应该会看到您的用户名和信用:)
我刚刚通过命令行再次添加了我的电子邮件,它解决了这个问题:
$ git config user.email "myemil@mydomain.com"
另一个问题是关于你的分支的。如果您在 maser 旁边创建另一个分支并尝试推送该分支,则可能会出现此问题。就我而言,我已经开始努力掌握并得到解决方案。
我遇到了同样的问题,这对我有用:GitHub 贡献检查器,链接如下。安装后,该程序会检查您最近提交的有效性并为您提供规则列表,其中未满足的规则/规则以红色显示。
我的问题是 GitHub 使用 Cygwin 终端名称作为电子邮件地址,所以我只是将 Cygwin 终端名称添加到我的个人资料中,并且所有最近的提交都添加到了我的 GitHub 日历中。
您的提交不会被视为贡献!检查以下详细信息: https ://github.com/jdennes/contribution-checker
您可以转到https://github.com/settings/emails 并使用 git config --global user.email 添加您正在使用的电子邮件
有同样的问题,我的通过设置邮箱解决了
git config --global user.email jonathan.m2ndoza@gmail.com
希望这可以帮助。
我有同样的问题,解决方案非常简单。我为全局电子邮件配置设置了错误的电子邮件
git config --global user.email "email@yourmail.com"
只需确保上述电子邮件和您的 GitHub 帐户电子邮件相同
github 上的“贡献日历”或“活动概览”仅记录与 github 帐户中记录的邮件地址相关的提交。
更改所有未来提交的邮件地址
正如该线程中的许多其他人已经指出的那样,通过以下方式查找当前本地保存的电子邮件地址:
git config user.email
如果它与 github 上的邮件不匹配,请使用以下命令进行更改:
git config --global user.email my_email@gmail.com
这将全局更改所有未来提交的邮件地址,但不会影响过去提交的“贡献概述”。您可以按照官方文档进行详细说明。
更改邮件地址以更新过去提交的概述
你意识到你过去的许多提交没有正确记录在 Github “贡献概述”中:
要更改它,您可以按照官方 github 文档中解释的步骤更改存储库的作者信息。
一个简短的总结:
- 打开 git bash
克隆一个裸仓库
git clone --bare https://github.com/user/repo.git cd repo.git
更改变量后将以下代码粘贴到 git bash 控制台中
OLD_EMAIL
,CORRECT_NAME
并且CORRECT_EMAIL
:#!/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
按回车键运行脚本
- 将更正后的历史推送到 github
git push --force --tags origin 'refs/heads/*'
警告:此操作会破坏您的存储库的历史记录。如果您正在与其他人在存储库上进行协作,那么重写已发布的历史记录被认为是不好的做法。你应该只在紧急情况下这样做。
GitHub 在帮助中明确说明了他们如何衡量您的贡献:
问题和拉取请求:
- 仅当它们在独立存储库中打开时,而不是在 fork 中打开
提交:
仅当它们满足以下所有条件时:用于提交的电子邮件地址与您的 GitHub 帐户相关联
提交是在独立存储库中进行的,而不是分叉
提交是:
- 在存储库的默认分支中(通常是 master)
- 在 gh-pages 分支中(用于带有项目站点的存储库)
此外,以下至少一项必须为真:
- 您是存储库的协作者或拥有该存储库的组织的成员
- 您已经分叉了存储库
- 您已在存储库中打开拉取请求或问题
- 您已为存储库加注星标
注意:在提交满足要求的提交后,您可能需要等待长达 24 小时才能看到贡献出现在您的贡献图表上
我就同样的问题联系了 Github 团队,这是他们的回复,希望对你们中的一些人有所帮助
如果满足某些标准,则计算贡献,如下所述:
您可以使用此应用程序找出为什么对公共存储库的特定提交不计为贡献:
https://contribution-checker.herokuapp.com/ 这个贡献检查器非常有用,它解决了我的问题
人们经常发现他们缺少贡献,因为他们的提交是由与他们的 GitHub 帐户无关的电子邮件地址创作的,如下所述:
您可以通过将 .patch 添加到提交 URL 的末尾来检查提交的作者,如下所示:
https://github.com/github/linguist/commit/cfd5cbaba00122fceea1cfb108c5bdc3d451065a.patch
我通过在本地环境中使用 GitHub 配置文件的用户名作为我的 git 用户名解决了类似的问题。
例如,
在本地 git 配置中将全局用户名设置为susithrj。
git config --global user.name "susithrj"
我最近不得不恢复我的笔记本电脑并且忘记将我的电子邮件重新配置为 git。我的笔记本电脑用户名看起来与我的 git 用户名相似,所以我只是盲目地认为我的提交被正确归因。如发布的那样,您可以更改全局电子邮件设置。但是,如果您想更正项目中未归因的提交,您可以使用此运行此脚本来创建一个别名gca
,您可以在您的 git 项目目录中运行该别名来更改您过去提交的作者身份。
从您的~
目录中,添加:
$ cat <<EOF >> ~/.aliases
function git_change_authorship {
git filter-branch -f --env-filter "
GIT_AUTHOR_NAME=\"\$1\"
GIT_AUTHOR_EMAIL=\"\$2\"
GIT_COMMITTER_NAME=\"\$1\"
GIT_COMMITTER_EMAIL=\"\$2\"
"
}
alias gca=git_change_authorship
EOF
$ source ~/.aliases
然后在你的 git 项目目录中运行gca <git username> <git email address>
小心!我只在我自己的个人项目中使用过这个,我是唯一的提交者。还没有机会通过小组项目对其进行测试,因此请谨慎进行。
您可以将您的电子邮件保密,并且仍然会在您的日历中显示贡献。您可以选择将您的电子邮件地址从github 电子邮件设置中保密,并在您的 git 配置中 使用github noreply 电子邮件地址。
git config user.email "xxxxxxxxxxx@users.noreply.github.com"
笔记
对我来说,我选择将我的电子邮件从github 电子邮件设置中保密。这给了我一个错误
Your push would publish a private email address.
在尝试推送到我的仓库时。我删除了电子邮件。在这之后推动是成功的,但贡献没有记录在我的日历中。
正如 GitHub 在电子邮件设置页面中提到的
在执行基于 Web 的 Git 操作(例如编辑和合并)并代表您发送电子邮件时,我们将删除您的公开个人资料电子邮件并使用 xxxxxxxxxxx@users.noreply.github.com。如果您希望命令行 Git 操作使用您的私人电子邮件,您必须在 Git 中设置您的电子邮件。
确保使用用户标志。例如
git push -u origin
,而不是
git push
我遇到了同样的问题,并发现我没有推送到 origin/main 分支,而是推送到其他分支。我通过合并两个分支来解决它。此外,即使两个分支合并,如果origin/main
分支落后于多个提交,贡献部分仍然不会更新。仍然需要进行合并(某种)以确保origin/main
始终更新分支,请执行以下操作:
注意:(此解决方案很容易适用于从一个远程提取并推送到不同目标存储库(problamacic 一个)的本地存储库)
git pull origin main:temp
- 这会将主分支拉到一个临时分支(temp 是本地分支),但
origin/main
如果一个推送多个分支系统,分支仍然落后于多个提交。我们需要检查到临时分支以合并/向前移动它(可以这么说)
- 这会将主分支拉到一个临时分支(temp 是本地分支),但
git checkout temp
- 它将从:
(origin/main, origin/HEAD, temp)
to->>>>>>>>(HEAD -> temp, origin/main, origin/HEAD)
这意味着现在 HEAD 指向temp
分支,所以我们可以让它向前移动(可以这么说)几个提交(或合并,无论哪种情况)。
- 它将从:
git merge branch-second
- 现在我们要在
(origin/branch-second, main, branch-second)
本地合并到 branch-second:,这是合并后高于 temp 的几个提交,如下所示:(HEAD -> temp, origin/branch-second, main, branch-second)
- 现在我们要在
git push origin temp:main
- 现在将 temp 推送到 origin 中的 main (origin 表示远程):
git log --all --decorate --oneline --graph
显示:(HEAD -> temp, origin/main, origin/HEAD, origin/branch-second, main, branch-second)
因此,origin/main 被合并并推送到第二分支,并且都处于同一级别,并且贡献开始出现:) 希望它可以节省您的时间
查看我的中号文章: Medium
对我来说是项目中的文件:
/.git/config
...
[user]
name = your user
email = user@host.com
...
在块 [user] 内仔细检查“电子邮件”是否正确(我的不正确)并且名称是唯一的(我的重复了)。
仔细检查贡献者正在增加使用:
git shortlog -sn
进行推送,检查哪个正在增加计数器,并且该名称应该是块内的名称 [用户]
对于那些在 git config 中输入正确的(您认为的)电子邮件和名称后仍然无法使其工作的人:
删除包裹电子邮件和名称的引号。
这对我有用,粗心的我..
我通过以下方式解决了我的错误:
我已经使用以下方式上传了回购:
git remote add url "my-repo-link"
git push url master
即使在 push 之后,使用url 而不是 origin也没有显示任何绿点,所以,我创建了另一个 repo,然后重新初始化并提交,这次我写:
git remote add origin "my-repo-link"
git push origin master
我之前对前回购的所有承诺也都添加到了我的新回购中……节省了我的工作和时间