【问题标题】:How can I find out who force pushed in git?我怎样才能找出谁在 git 中强制推送?
【发布时间】:2013-02-08 07:27:42
【问题描述】:

有人使用了git push --force,但我无法从日志中看出是谁做的。有没有办法确定罪魁祸首?

【问题讨论】:

  • 您可以让团队的每个成员进行测谎。没有告诉他们,如果罪魁祸首不挺身而出,每个人都将不得不在午餐时间工作一周
  • 请注意,您很快就能do a git push --force in a more secure way

标签: git


【解决方案1】:

2018 年 11 月更新:如果您要推送到 GitHub 等集中式 Git 存储库托管服务,那么您将能够看到谁强行推送了您的分支。但这仅仅是因为 GitHub 选择在其 GUI 中显示该事件。

在“Find committer of a force push on GitHub”查看更多信息。


2013 年原始答案:

正如我在“Distributed Version Control Systems and the Enterprise - a Good mix?”中提到的,仅使用 Git 没有授权或身份验证。

您需要authorization layer (如Gitolite)来跟踪谁做了什么。 (Gitolite 自带审计跟踪机制)。

但是如果你的 repo 可以通过file (or local) protocol 访问,那么你就无法知道是谁强制推送了。

(来自motivationalgenerator.comwikipedia

【讨论】:

  • 使用 bitbucket。无记录。会不会是某些 GUI 工具意外完成的,它不会弹出对话框来警告用户?
  • @wcochran 我确认我上面提到的记录仅适用于 GitHub 存储库。对于 BitBucket,push --force 可以从任意数量的来源完成,包括一个简单的命令行会话。
【解决方案2】:

如果您幸运足以使用GitHubGitHub for Enterprise,您可以查看events REST API 并检查谁/何时推送/丢弃 到远程引用,例如 log4j:

https://api.github.com/repos/apache/log4j/events

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2018-12-12
    • 2011-04-07
    • 2014-12-04
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多