如何在Github贡献板上创作自己的像素涂鸦

工作劳累?身体发虚?没时间提交代码?看着自己的Github主页中 0 contributions in the last year 是不是很丧气?不用担心,现在你不仅可以补上你那些空缺的时光,还可以在上面创建属于自己独一无二的像素涂鸦作品,画个爱心对TA表白,涂个蛋糕纪念生日,尽情发挥你的创造力。

各位Gayhub,噢不,Github的朋友们,应该都知道Github在个人主页有一个贡献板块吧,它通过不同的颜色来展现你在特定时间段内提交次数的多少,颜色越深代表你那天commit的次数越多,奈何我等菜鸡属性,总觉着自己的贡献面板和大佬之间存在着天壤之别。

别人家的Github:

image.png

我的Github:

image.png

看着别人绿油油的一片,再看看自己 0 contributions in the last year 是不是有点儿心酸呢?

闲来无聊,就研究了下Github贡献板是根据什么规则进行统计显示的,发现这玩意还是动态生成的。

什么是动态生成呢?

就是说Github在生成贡献热力图的时候是会实时统计你创建的所有仓库的commit情况,比如你有个A仓库,并且A仓库在某天进行了commit提交操作,那么对应到Github的贡献板上的相应日期就会出现一个小绿点,小绿点的颜色深浅和你commit的次数成正比(但并不绝对),但是当你把仓库A从Github删除的时候,这个小绿点也会跟着消失,这就叫动态生成。(国内Gitee码云的贡献面板则是一次性生成的绿点生成之后不会随着相关仓库的删除而消失,请谨慎操作!)

那么小绿点深浅的具体规则又是什么呢?提交多少次才能变成最深的绿的呢?

有关这个规则我在Github官方并没有找到任何说明,不过网上有大佬可能自己试验出来了。

image.png

甚至还有评论说给Github官方发过邮件,但是这个居然是机密?

image.png

哈哈哈,估计细节方面可能不大准确了,毕竟人家官方都不愿意说肯定是有不为人知的秘密,不过大概的规则肯定和上图中的大佬说的差不多啦。

说了这么多,那么我们究竟如何才能实现任意的对贡献面板进行修改呢?时间还会倒流?

还真说到点子上了,关键点就在于时间。

其实Github统计的commit时间取决于Git仓库中记录的commit时间,而往Git仓库中提交的时间是可以修改的。

由于对Git命令不是太熟,一开始想到了通过修改系统时间来改变commit的时间,发现是可行的。

后来查到了commit命令有个--date参数,可以实现提交时间的自定义,格式为:

git commit --date="月 日 时间 年 +0800" -m "提交"

比如:

git commit --date="May 7 9:05:20 2016 +0800" -m "提交"

这样就可以实现用过去的时间进行提交。不过关于Github统计时间需要注意下根据官方说法是根据UTC时间统计的,不过我实测发现貌似和Github服务器的所在地点的时区有关,我访问的服务器猜测在旧金山,与北京时间差了16小时,也就是说如果想要Github统计的时间是0点,那么你北京时间就要设置成16点才行。

image.png

自定义提交时间我们实现了,接下来的事情就好办啦,我们如果要实现在Github贡献板任意涂鸦,其实只需要知道哪一天我们需要commit多少次就好了,自定义提交时间用来决定我们想让哪些格子有颜色,而commit次数的多少决定了颜色的深浅,这样通过这两者的结合,我们就可以轻松地创造出属于自己的像素风格的涂鸦啦。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from git import Repo
import time

def timestamp_to_str(timestamp, format='%b %d %H:%M:%S %Y'):
    return time.strftime(format, time.localtime(timestamp))

def str_to_timestamp(str_time, format='%Y-%m-%d %H:%M:%S'):
    return int(time.mktime(time.strptime(str_time, format)))

if __name__ == '__main__':
    repo = Repo('./你的本地仓库地址')
    git = repo.git
    with open('./map.qs', 'r') as fp:
        for line in fp.readlines():
            line = line.split()
            '''
            github贡献统计时间取决于服务器位置,当前我测试发现和实际提交时间差了-16小时,
            可能是使用的旧金山的时间,我懵的,如果显示不对要自己改下后面时间。
            '''
            #os.system('date {} && time {}'.format(line[0], '16:00:00'))
            for i in range(int(line[1])):
                time_str = timestamp_to_str(str_to_timestamp(line[0] + ' 16:00:00')) + ' +0800'
                git.commit('--allow-empty', '--date=' + time_str, '-m', line[0] + '_' + str(i+1))

原理就这么简单,纯属无聊,如果你也同样想玩的话可以照着方法去试试。

如果嫌自己写麻烦的话也可以直接用我写好的工具。

项目地址:https://github.com/qinshuang1998/GithubPainter

里面有个用html写的designer设计器,打开后会生成一个和Github一模一样的贡献板,你可以通过在上面点击鼠标来控制格子的颜色,从而画出你想要的图形,最后点导出,会生成一个out.qs的文件,然后用commit.py的python脚本读取它并对本地的Git仓库进行commit操作就好了(需要事先准备好一个Git仓库以供操作,脚本中的文件路径等参数需要自己改动),运行完成后将你的本地仓库push到Github上,然后就能看到你自己设计的像素图形啦(生成时间不确定,24小时内都可能)。

image.png

我用这个在我出生那年画了一个纪念生日的像素图案,还给配上了蛋糕,哈哈哈你也来试试吧。

heatmap

艺术无处不在,Github也不要放过噢。

注意:本项目仅供娱乐,请勿用于不当途径!产生的任何纠纷本项目概不负责。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354