【问题标题】:Force push Git Repository even if the contents are up to date [duplicate]即使内容是最新的,也强制推送 Git 存储库 [重复]
【发布时间】:2019-10-07 13:56:51
【问题描述】:

我有一个本地 git 存储库,我将它推送到“云”平台中的一些存储库。 在我使用 git push origin master 进行推送后,后端会调用一个脚本。问题是,如果存储库是最新的并且我尝试再次推送存储库,它会说存储库已经是最新的,因此脚本永远不会被调用。我想知道是否有办法将同一个 repo 重新推送到同一个端点。

在 repo 中更改某些内容并重新推送显然是可行的。

【问题讨论】:

  • 可能重复 stackoverflow.com/questions/13677125/… (共识是你不能真正重新推送同一个 repo)
  • 大概这意味着 post-receive 钩子只是触发此脚本的一个可能原因。在这种情况下,有另一种方式来触发它是有意义的,例如SSH 或网络请求。
  • @Guarav 以下任何解决方案对您有用吗?
  • @UnbearableLightness:我一直在寻找实现这一目标的简单方法。使用空提交对我有用。我可能会创建一个别名,以便命令保持简短。谢谢!
  • @Guarav 太好了,别忘了点击箭头下方的绿色勾号来接受答案

标签: git


【解决方案1】:

要触发您的管道,您可以提交一个空提交。为此,可以在创建提交时使用 --allow-empty 选项。

$ git commit -m 'Triggering pipeline' --allow-empty

参考: https://git-scm.com/docs/git-commit

【讨论】:

    【解决方案2】:

    如果您希望接收/更新挂钩即使在不更改特定 ref 的情况下也能运行,您必须像 @UnbearableLightness 所说的那样用空提交来摇晃它,或者使用代理 ref 并让挂钩知道什么与该参考的更新有关。我使用它在受保护的 repos 上运行任意命令,我只是将脚本推送到 refs/commands 并且钩子运行它。您可以拥有refs/proxy/* 模式并触发相同的后端进程,以更新proxy/-less 参考。甚至可以拒绝 refs/proxy/heads/master 推送,并带有“好的,我假装 refs/heads/master 已更新”消息。

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 2020-10-24
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多