Py学习  »  Git

如何在Github中记录你的贡献值

郭霖 • 6 年前 • 592 次点击  



今日科技快讯


近日,京东宣布与斯坦福人工智能实验室启动京东-斯坦福联合AI研究计划:京东将联合斯坦福人工智能实验室围绕机器学习、深度学习、机器人、自然语言处理和计算机视觉等前沿技术方向,结合京东实际应用场景和数据,开展以研究项目为基础的合作。


作者简介


本篇文章来自 落萚 的投稿。主要讲解了在 Github 中如何正确记录你的 Contributions,希望对大家有所帮助!

落萚 的博客地址

http://www.jianshu.com/u/57d0037f4973


前言


最近在 Github 点开 your profile 时发现,怎么明明有进行 Commit and Push 怎么在Contributions 中不记录『绿油油』了?


正文


查错

查看Commit信息也发现那些未被记录的Commit都是没有头像的,如下

Commit

打开Github官方帮助文档,地址如下:

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/

  • 为什么我的贡献不会显示在我的个人资料

您的个人资料图表是您对GitHub资料库的贡献记录。贡献根据协调世界时(UTC)而不是本地时区的时间戳。只有符合某些标准才能计算贡献。在某些情况下,我们可能需要重新构建图形才能显示出贡献。

  • 贡献的计算

Issue和Pull的请求

如果在独立的存储库中打开,而不是分支(fork),问题和Pull请求将显示在您的贡献图上。

提交

如果满足以下所有条件,提交将显示在您的贡献图上:

  • 用于提交的电子邮件地址与您的GitHub帐户相关联。

  • 这些提交是在独立的存储库中进行的,而不是fork仓库。

这些commits是在:

  • 在存储库的默认分支(通常是master)

  • 在gh-pages分支机构(对于具有Project Pages sites仓库)

此外,至少满足下面条件中的一个:

  • 你是这个仓库的协作者,或者是这个版本库的拥有组织中的一员

  • 你fork过这个仓库

  • 你对这个仓库发起过Pull请求或者Issue

  • 你对这个仓库标记了Star

此处截了一部分,本人翻译水平有限,希望有能力的朋友们可以去看看官方英文原版文档,即

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/

看到这里,本人打开了 terminal,运行命令 git config user.email 发现邮箱确实打错了,这并不是关联我Github账户的邮箱地址,于是导致了 Contributions 未记录我的提交记录。

补救方案

难道没法补救了吗!因为一点小失误我们就就白提交了那么多?tan90°!

我们接着继续看Github官方帮助文档,最终找到了Changing author info,地址如下:

https://help.github.com/articles/changing-author-info/

这篇文档告诉我们如何修改提交记录中的作者信息,但是有一个警告提示

要更改现有提交中记录的名称和/或电子邮件地址,您必须重写Git存储库的整个历史记录。

警告:此操作对您的仓库的历史具有破坏性。如果您正在与他人合作进行存储库,那么重写已发布的历史是一种不好的做法。仅限你在紧急情况下这样做。

我表示为确实很迫切想要那片『绿油油』…哈哈😝

那就…开干!

使用脚本更改仓库的Git历史记录。我们创建了一个脚本,它将更改之前在其作者或提交者字段中使用旧电子邮件地址的任何提交,以使用正确的名称和电子邮件地址。

注意:运行此脚本将重写所有仓库协作者的历史记录。完成这些步骤后,任何具有分支或克隆的人员必须取得重写的历史记录,并将任何本地更改重新修改为重写的历史记录。

  • 打开Terminal

  • 创建一个新的裸的克隆您的存储库:

    • git clone --bare https://github.com/(github用户名)/(仓库名).git

    • cd (仓库名).git

  • 复制并粘贴脚本,根据您收集的信息替换以下变量:

    • OLD_EMAIL(旧的Email地址)

    • CORRECT_NAME(正确的用户名)

    • CORRECT_EMAIL(正确的Email地址)

当你愉快对着文档跟着步骤一步步做下去是,你以为发现了补救大法就可以补救了?tan90°!

正常打开的补救步骤

说好的script呢!当我一脸懵逼时我的脑子里冒出了个大胆的想法……如果用科学上网法打开这个页面会不会就奇效?搞起搞起!果然……见证奇迹的时候到了……

用科学上网法打开的补救步骤

WTF???

好了不管如何至少找到了那个脚本…我们继续

新建一个文本文件,将下面的代码粘贴进去,然后把后缀名改为.sh

#!/bin/sh 
git filter-branch --env-filter 


    
' 

OLD_EMAIL="旧的Email地址" 
CORRECT_NAME="正确的用户名" 
CORRECT_EMAIL="正确的Email地址" 

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

然后将sh文件复制到你刚刚Clone的目录下,在MacOS中是Clone到/Users/用户名下,接着继续打开Terminal,输入bash。再将sh文件拖入Terminal,然后回车!结果 Terminal 提示你 Permission denied。此时我们需要给此文件授权,在 bash 下输入 chmod a+x repo.sh,现在再将文件拖入 Terminal,点击 Enter 键,待它修改完输入exit退出bash模式

用 git log 命令看看新 Git 历史有没有错误

确认无误后

Push 正确的历史到 Github

git push --force --tags origin 'refs/heads/*'

最后清除掉这个临时仓库

cd .. 
rm -rf (仓库名).git

此时你到Github看看your profile,那片『绿油油』就回来啦!再查看Commit信息你也会发现之前没有头像的提交记录都有头像啦!到这补救方案就做完咯!我将终端日志贴到了附录处。

有头像啦

收尾工作

处理完Github部分的提交信息我们还需要将本地Git的全局信息修改好,以免之后的提交再出问题,打开Terminal,输入

git config --global user.email "关联Github的邮件地址" 
git config --global user.name "Github用户名"

若你使用Xcode,那你可以直接在Xcode中修改Git的全局信息,点击菜单栏的Xcode进入到Preferences

Preferences

将Author Email修改为正确的Email地址即可

Warning!!!

不知道大家是否记得官方文档中有一段注意,在此我再将它贴出来

注意:运行此脚本将重写所有仓库协作者的历史记录。完成这些步骤后,任何具有分支或克隆的人员必须取得重写的历史记录,并将任何本地更改重新修改为重写的历史记录。

完成补救方案后你只修改了Github的记录,而未修改本地记录,此时就会出现不一致的情况,在Xcode中如果你直接Commit and Push就会弹出如下警告

out of date

Xcode告诉你本地版本已过时,正确的操作方法是先将Github上的仓库Pull下来,点击Pull后若提示Local repository up to date则本地仓库更新成功

up to date

而在Android Studio中,若直接Commit and Push将会提示

rejected

此时最好的做法依然是点击Cancel,然后将Github上的仓库Pull下来再进行Commit and Push

然而此时如果你本地的仓库又进行过比较多的修改了,你点击Pull后会弹出

Merged

此时点击Merge,然后会弹框给你预览合并后的效果,再点击Apply即可,然后再进行Commit and Push即可。

附录

Terminal日志


欢迎长按下图 -> 识别图中二维码

或者 扫一扫 关注我的公众号


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/uRMjtijf0A
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4340
 
592 次点击