【问题标题】:How to bypass the pre-receive hook for a single commit?如何绕过单个提交的预接收挂钩?
【发布时间】:2023-01-12 15:16:12
【问题描述】:

我想将 java 脚本中的代码推送到 git 上的远程 repo,该 repo 包含扫描代码的 per-recived 钩子,我收到错误消息说我的代码包含私钥,在查看它后我的代码不包含私钥密钥或任何秘密信息。它只包含一个词 rsa-key,pre-receive hook 将其视为威胁,并且不允许我推送我的代码。是否有任何解决方案如何在不使用 .gitigne 的情况下跳过扫描某些 java 脚本文件,或更改代码中的任何内容,因为现在不可能。

我试过了:

git push --no-verify
# got the same error 
remote: [WARNING] You are trying to commit a password, token, private key or confidential information which is not allowed in our **** Git

【问题讨论】:

  • 我怀疑您是否可以从您的终端绕过预接收挂钩,因为它就像一种安全措施,因此设计为不可绕过。您可以访问挂钩本身,还是可以联系任何人?
  • --no-verify 用于预推挂钩。您无法绕过本地计算机的预接收挂钩。如果服务器端 hook 中的秘密检测不正确,则需要让 repo 的所有者修复 hook。
  • 我无权访问 git hooks,它们对整个组织都是一样的,也不能只对组织中的一个 repo 进行更改
  • 您的代码是否依赖于“rsa-key”这个词,或者您可以重命名它吗?
  • 关于,“......它们对整个组织都是一样的,也不能改变......”但是如果钩子有错误或者过于严格,也许更新它会对整个组织有所帮助。 (或者通过简单地将您的案例展示给挂钩所有者,他们可能会提供解决方法。)

标签: javascript git devops hook git-push


【解决方案1】:

pre-receive 挂钩设置在服务器上,不能仅使用客户端的 git 选项绕过。


您可以向项目的维护者报告问题,并让他们更新他们的钩子,这样您的误报就不会再被拒绝,
或者也许在您的代码中找到一个解决方法来跳过检查(例如:将 const tag = "rsa-key" 变成 const tag = "rsa-"+"key" 或一些类似的坏 hack ...)

您也可以向维护者(或者,希望阅读 repo 的文档...)寻求一种方法来为这个预接收挂钩提供额外的说明——例如:提交消息中的特殊关键字(skip-key-check?)或者在你的代码中有罪的行旁边的评论(//pre-receive-secret:skip?)

【讨论】:

    猜你喜欢
    • 2015-12-10
    • 2020-07-28
    • 2015-03-04
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2019-06-02
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多