V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
SuperFashi
V2EX  ›  分享创造

FakeGit:一个自欺欺人的好玩意

  •  
  •   SuperFashi ·
    superfashi · 2016-07-07 10:47:03 +08:00 · 4673 次点击
    这是一个创建于 3060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Github 页面 | 博客页面


    FakeGit

    pypi

    FakeGit 是一个自欺欺人的好玩意,它会修改你的本地 git 配置文件,让 git 以为你是另外一个提交者。

    你可以将其用于你自己的项目,当然也可以用于任何你具有写权限的 git 仓库。

    示例

    FakeGit Demo

    举个栗子, jQuery 之父和 PHP 之父在我的项目里提交了一些好玩的玩意。当然,我对两位充满敬意且无意冒犯。

    这些都是真实的提交,并且会被 Github 和基本上所有 git 代码托管网站识别成其用户,只要这个用户存在。

    安装

    git clone https://github.com/hanbang-wang/FakeGit.git
    cd FakeGit
    python setup.py install
    

    或者使用 pip :

    pip install fakegit
    

    用法

    fakegit <command> [--user] [--help|-h]
    

    FakeGit 会把所有的参数传递给原 git 命令行程序,除了以下的:

    change       永远更改你的本地身份
    recover      快速删除本地 git 配置文件内的 user 关键字
    --help, -h   一个简单的帮助
    

    FakeGit 会拦截 --user 和紧接着的一个参数,就是提交者的信息。

    身份格式

    如果你要钦定某个人, 使用 姓名 <邮箱> 这样的格式, 比如:

    --user 'John Doe <[email protected]>'
    

    或者你不想填写邮箱地址,留空即可:

    --user 'No Email <>'
    

    我同时也给 Github 用户做了个身份查询,填写用户名即可:

    --user 'example'
    

    例子

    fakegit commit -a -m "A example." --user SuperFashi"
    

    程序将会使用 Github API 查询使用相应 id SuperFashi 的用户,也就是我,查询我的提交历史和提交记录中的邮箱,生成一个类似于 SuperFashi <[email protected]> 的格式,用这个信息来进行提交。

    但是我还是推荐指定用户信息:

    fakegit commit -a -m "A example." --user "SuperFashi <[email protected]>"
    

    当然你也可以用 FakeGit 执行任何 git 有的命令:

    fakegit push --user "whateveryoulike <>"
    # 和 `git push` 一样
    

    因为只有 commit 命令会使用 user 关键字,所以都一样。

    附加

    fakegit change 会永久更改你的本地身份,所以必须跟着 --user,否则会抛出个错误。

    fakegit recover 是一个快速重置你本地 git 配置文件的小工具,预防你后悔或者想在突然退出程序后恢复。

    授权 & 一些东西

    这个小项目用的是 Unlicense ,去 LICENSE 了解更多。但是你应该详细阅读一下下面的东西:

    这个项目和其他人的身份有关,所以最后有可能成为个身份盗贼,或者发生损害他人名誉权等这类犯法的事情

    我不承担任何责任,同时我希望各位只用其来开一些无伤大雅的玩笑,或者用来做教育或学术研究。

    第 1 条附言  ·  2016-09-09 18:55:05 +08:00
    19 条回复    2016-07-08 00:35:12 +08:00
    Mayu
        1
    Mayu  
       2016-07-07 10:51:41 +08:00
    这...
    Niris
        2
    Niris  
       2016-07-07 11:09:48 +08:00   ❤️ 3
    9hills
        3
    9hills  
       2016-07-07 11:27:17 +08:00
    感谢 github 支持 GPG
    DoraJDJ
        4
    DoraJDJ  
       2016-07-07 11:31:53 +08:00
    git-blame-someone-else
    另外 GPG 签名可破解
    zealic
        5
    zealic  
       2016-07-07 11:33:45 +08:00
    GPG 原来是做这事的,还真有人会做伪造这回事...
    SuperFashi
        6
    SuperFashi  
    OP
       2016-07-07 12:03:34 +08:00
    @DoraJDJ 原来有人写过这种玩意,不过我这个更高级一点,而且顺便熟悉一下 python 的 cli 安装
    xjtlujoe
        7
    xjtlujoe  
       2016-07-07 13:02:35 +08:00
    略 diao
    popu111
        8
    popu111  
       2016-07-07 13:21:02 +08:00
    +1s
    crisfun
        9
    crisfun  
       2016-07-07 13:30:13 +08:00 via iPhone
    正需要, fake 我自己
    skydiver
        10
    skydiver  
       2016-07-07 13:33:26 +08:00   ❤️ 1
    git commit --author='John Doe <[email protected]>'

    Git 本身就有的功能,何必要装一个库……
    shiny
        11
    shiny  
       2016-07-07 13:39:10 +08:00 via iPhone
    @skydiver 给楼主一记闷棍😄
    imlonghao
        12
    imlonghao  
       2016-07-07 13:52:29 +08:00
    没 GPG 签名的就不是我 commit 的...
    SuperFashi
        13
    SuperFashi  
    OP
       2016-07-07 13:53:45 +08:00
    @shiny @skydiver 自己都不试试就来打脸,真是不专业啊。
    Citrus
        14
    Citrus  
       2016-07-07 14:11:07 +08:00 via iPhone
    @SuperFashi 没懂。。。你这个工具除了自动帮我在 GitHub 上查找以外,有哪一点不能用原生命令实现?
    skydiver
        15
    skydiver  
       2016-07-07 14:27:42 +08:00
    @SuperFashi 你不就是想说 author 和 commiter 不一样么
    SuperFashi
        16
    SuperFashi  
    OP
       2016-07-07 15:04:39 +08:00
    @Citrus 嗯,如果不是那个功能的话我就用 shell 写了。
    strwei
        17
    strwei  
       2016-07-07 15:37:31 +08:00
    装逼神器,已 star
    book1925
        18
    book1925  
       2016-07-07 15:41:18 +08:00 via Android   ❤️ 1
    可以伪装成长者做了一点微小的工作……
    dphdjy
        19
    dphdjy  
       2016-07-08 00:35:12 +08:00 via Android
    github 本身改 git 的 user.email 就会变成这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:38 · PVG 17:38 · LAX 01:38 · JFK 04:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.