7

我有一个 git repo,我只是将它推送到服务器。然后我在服务器上设置了一个接收后挂钩。我想检查它是否有效。我必须再次提交以查看它是否有效?我真的很想在尝试设置此设置时强制推动,而不是继续进行没有实际价值的提交。它不起作用,我就是不明白。

$ git push --force origin master
Everything up-to-date
4

2 回答 2

6

您需要推送一个较旧的提交来实现这一点。例如,您可以使用以下注释在当前 HEAD 之前推送提交:

git push --force origin HEAD^:master 

在此之后,您可以再次推送 HEAD 提交:

git push origin master

但是,与其一直推送,不如考虑手动调用钩子。这通常更容易——但当你认为一切正常时,不要忘记用实际的推动来测试。

于 2012-06-26T21:59:45.077 回答
2

您可以使用一些肮脏的技巧:

git stash save && git push --force origin "stash@{0}:master" && git stash pop

这做了 3 件事:

  1. 存储当前未提交的更改。存储创建一个新的提交,但在一个单独的参考上。它不会弄脏你的历史。此外,它会从更改中清除工作目录。请参见步骤 3。
  2. 推送隐藏的代码
  3. 弹出存储 - 清除存储并将所有文件放回您的工作目录。

这将有效地将所有文件推送到远程,而无需创建本地提交。

于 2017-07-06T11:46:37.137 回答