【问题标题】:Git - Is it possible to modify/delete the reflog of a remote git repository, e.g. on Github?Git - 是否可以修改/删除远程 git 存储库的 reflog,例如在 Github 上?
【发布时间】:2018-05-26 00:38:46
【问题描述】:

找朋友。

场景

机密信息被意外推送到公共 github 存储库。一旦提交者注意到失败,他决定用 push -f 覆盖 git 历史记录以从网络上删除信息。

问题

  • 机密信息仍可通过 github 上的git reflog 访问。所以github的工作人员还是可以访问到信息的。

  • 更糟糕的是,如果提交者在初始提交消息中添加了引用,例如使用#-sign 引用问题,github 会自动将提交链接放入该问题。在这种情况下,仍然可以通过 github 前端访问被覆盖的信息。

问题

  • 是否可以修改/删除远程 git 或 github 存储库的 reflog?
  • 如果不可能。在给定的场景下你会怎么做?删除引用第一次提交的问题?删除整个存储库?还有什么?

【问题讨论】:

标签: git github


【解决方案1】:

只要是plain Git不可能

但另一方面,“远程”存储库——每个人都推送到的存储库 并且从 — 获取是“裸”的,并且裸存储库被初始化 默认禁用 reflog。

至于 Github,这完全是另一回事,因为他们没有 使用“普通”Git 为存储库提供服务,因此在服务器端提供服务 存储库的管理确实在 Git 领域之外—— 请看what the Github docu says

'一旦你将提交推送到 GitHub,你应该考虑它包含的任何数据都被泄露了。'

接下来要做什么?如果数据被泄露

1) 使用any of the available tools 重写历史记录;

2) 强制推送结果以覆盖已经存在的内容。

3) 联系 Github 以获得进一步的帮助。如果这发生在您的 $dayjob 中,这应该是官方联系人。在此之前,任何联系 Github 的人都应该read their "terms and conditions"。联系时,应该礼貌地询问可能的后果是什么,以及是否有可能使用从 repo 获取以外的其他方式(已经修复)来防止受损信息的传播。我的意思是说,repo 副本或备份或 Github 内部的其他东西

【讨论】:

  • 谢谢,我不知道“裸仓库”。 Github docu 说:'一旦你将提交推送到 GitHub,你应该考虑它包含的任何数据都会受到损害。'(感谢 Tim 指出这一点)。但是在 github 案例中应该遵循哪些额外的步骤?删除回购?
  • @jschnasse,答案就在同一页上——here is is。基本上它相当于“1)使用任何可用的工具重写历史;2)强制推送结果以覆盖已经存在的内容。随之而来的是,任何被推送的东西显然都是可以获取的,而这正是“考虑……被妥协”的意思。
  • @jschnasse 虽然 IANAL,但我注意到“没有云,只有别人的计算机”,所以当您决定不在自己的场所托管代码时,您基本上签署了这样的“哎呀”很难纠正。所以基本上,既然你似乎没有与 Github 签署 NDA,你可以问他们一些事情,仅此而已。
  • 请记住,GitHub 可能有关于已推送到其公共存储库的信息的法律免责声明。他们可能不会(也不能)保证您数据的隐私。这里最好的解决方案是一开始就不推送此类数据。
  • 实际上,条款和条件的第 4 点说:«您授予我们和我们的合法继承人……根据需要制作附带副本以……提供服务的权利。这包括将其复制到我们的数据库和进行备份等操作的权利;向您和其他用户展示;将其解析为搜索索引或在我们的服务器上进行分析;与其他用户分享;并执行它,以防您的内容类似于音乐或视频。»。这就是我所期望的,以及为什么建议尽可能联系工作人员以限制这些用例。
猜你喜欢
  • 2012-11-28
  • 2014-10-12
  • 2013-02-21
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 2014-09-03
  • 2012-04-23
  • 2013-05-11
相关资源
最近更新 更多