伪造git提交记录生成点阵字符

作为版本管理工具中的扛把子,由 linux 之父亲自操刀编写的 git 就不需要过多介绍了,想必已经是无人不知了

但有些人可能不知道的是,git 提交的记录其实是可以伪造的,核心的操作就在于提供了一些 override 的参数,这里用到的就是 --date 这个参数

基于这个 override 的处理,再结合点阵字体的字符数组,就可以玩出花来,比如下面伪造 github 的 contributions 提交点,来进行一些特别的显示

这个提交日期还可以一直前置,直到 1970-01-01,那么你的 github 主页就会显示一个如下的长长列表

这个玩意除了好玩之外,还有什么作用呢?来一个全部填充,假装把自己变成一个很努力的人,惊呆所有人,嘎嘎(如果面试可能还会有一点额外加分)

核心的代码就是以下这段,get_github_day 根据点阵字体获取对应的日期列表,dict 是一个由 0、1 组成的点阵字体二维数组

python 复制代码
def week_begin_day(day):
    weakday = time.strptime(day,'%Y-%m-%d')
    index = 0
    if (weakday[6]!=6):
        index = 6 - weakday[6] 
    y,m,d = weakday[0:3]
    begin_day = datetime.datetime(y,m,d)
    return begin_day + datetime.timedelta(index)

def get_draw_day(day, c):
    days = []
    letter = dict[c]
    for i in range(0,42):
        if (letter[i]==1):
            drawday = day + datetime.timedelta(i)
            days.append(drawday)
    return days

def get_day_by_word(word, day):
    days = []
    begin_day = week_begin_day(day) 
    index = 0
    n = len(word)
    while True:
        if (index >= n):
            break
        if word[index] != ' ':
            one_days = get_draw_day(begin_day, word[index])
            days.extend(one_days)
        index = index + 1
        begin_day = begin_day + datetime.timedelta(42)
    return days

def get_github_day():
    dates = []
    date_23 = get_day_by_word("FXXK GFW", "2023-01-07")
    dates.extend(date_23)
    return dates

def fake_commit(current_date, times):
    for t in times:
        commit_date = current_date.strftime("%Y-%m-%d") + " " + t.strftime("%H:%M:%S")
        with open('foo.txt', 'w', encoding='utf-8') as f:
            f.write(commit_date)
        os.system(f"git add foo.txt")
        os.system(f"git commit --quiet --date \"${commit_date}\" -m \"fake commit\"")

dates = get_github_day()
for d in dates:
    times = [random_time() for _ in range(random.randint(2, 5))]
    times.sort()
    fake_commit(d, times)

创建一个新仓库,然后在该仓库上进行 commit,为了让这些提交显示在 github 的 contributions 上,还需要配置本地 user.email 使用已经验证过的邮箱

如果不希望别人看到该仓库的提交明细,也可以新建为 private 仓库,然后在主页的 Contribution Settings 下拉列表中勾选 Private contributions

相关推荐
孙琦Ray6 小时前
GitHub 开源 Replica:用自家设计系统生成 AI 原型
开源·github·copilot·replica·设计系统·ai 原型
wflynn8 小时前
GitHub 日榜趋势速报 | 2026-10-31
开源·github
゛凌乱的记忆づ13 小时前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown
u13013016 小时前
GitHub 热榜项目:月榜(2026-10-31)
github
এ慕ོ冬℘゜16 小时前
Git 基础规范:小步提交、提交信息规范与常用命令
git·svn
忘了ʷºᵇₐ18 小时前
Git学习笔记
笔记·git·学习
wflynn18 小时前
GitHub 日榜趋势速报 | 2026-10-30
开源·github
miofly19 小时前
Anthropic为Claude四款模型加水印,两款旧模型留调参漏洞
开源·github
m4Rk_19 小时前
【论文阅读】Agent 记忆机制(116):Hybrid Memory——用互补策展与离线巩固构建长期记忆
论文阅读·人工智能·学习·开源·github
u13013021 小时前
GitHub 热榜项目:日榜(2026-10-31)
github