Tgr*_*Tgr 13 git github git-push
在我们的项目(在GitHub上托管)中,有人不小心每次都强行推动主人.没有人知道是否这样做,我想知道是谁做的,以及它背后有什么样的错误配置工具或坏习惯.
所以问题是,如何识别推动力量的用户?我拉的时候看到这样的东西:
# git pull --prune
(.....)
+ 4c0d44c...138b9ed master -> origin/master (forced update)
Run Code Online (Sandbox Code Playgroud)
但138b9ed
它只是源头/主人的最新提交,并且任何人都可能在强制推动后做出承诺; 甚至可能是推力器本人没有做出任何改变,只是重新定位,所以他的名字甚至不存在于作为作者的原始/主人历史的重写部分.
我也尝试了git reflog origin/master
,但它只是提供了相同的信息:有一条记录说明git pull --prune (forced update)
了提交ID 138b9ed
,但是这将再次将最后一个提交者提供给master,而不是那个强制推送的提交者.git reflog master
在原始服务器上运行可能会有所帮助,但GitHub并没有为您提供那种访问AFAIK.
有没有可靠的方法来找出推动起源的人(何时)?
Nev*_*nel 13
您可以向Github存储库添加webhook,并将推送通知提交给某个服务器或requestb.in之类的服务.
通知有效负载具有一个pusher
密钥,用于标识用于推送更新的Github用户帐户.这样你就能识别出"坏人".
编辑:有效负载也有一个布尔forced
键,告诉你是否--force
按下了偶数.它没有在Github的示例有效负载中显示[截至2013-07-06],但在另一个示例中可见.
编辑:这是唯一可能的,因为Github是一个集成解决方案,可识别推送器并在webhook有效负载中提供该信息.使用纯Git服务器(例如仅使用SSH进行授权)或使用不同的Git服务解决方案(Gitolite,Gitlab等),这可能是不可能的.Git本身无法识别推送的用户(Git只在提交和标记对象中保存用户信息),因此该信息必须由连接的标识和授权部分提供(这可以是SSH或HTTPS或类似;它也可以完全丢失,例如当本地推送到同一文件系统上的repo时).
正如 GitHub刚刚在 twitter上提到的
让力量(推)与你同在。
严重地。
继续,强制推送到那个分支
博客文章“强制推送时间线事件”提到:
当您强制推送到一个分支时,GitHub 现在会在您的拉取请求的“对话”时间线中显示强制推送事件。
单击“强制推送”链接将显示两个提交之间的两点比较。
归档时间: |
|
查看次数: |
8641 次 |
最近记录: |