没有提交就推

时间:2012-06-26 21:57:29

标签: git

我有一个git repo,我把它推到服务器上。然后我在服务器上设置了一个post-receive挂钩。我想检查它是否有效。我必须再次承诺,看它是否有效?我真的想在我试图建立这个设置时强行推动,而不是继续进行没有实际价值的提交。它不起作用,我只是不明白。

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

2 个答案:

答案 0 :(得分:5)

您需要推送较旧的提交才能实现此目的。例如,您可以使用此注释在当前HEAD之前推送提交:

git push --force origin HEAD^:master 

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

git push origin master

但是,不要一直推动考虑手动调用挂钩。这通常更容易 - 但是当你认为一切正常时,不要忘记用实际推动进行测试。

答案 1 :(得分:2)

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

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

这有三件事:

  1. 存储当前未提交的更改。 Stashing会创建一个新的提交,但是在单独的ref上。它不会弄脏你的历史。此外,它会从更改中清除工作目录。见第3步。
  2. 推送隐藏代码
  3. 弹出存储 - 清除存储并将所有文件放回工作目录。
  4. 这将有效地将所有文件推送到远程,而无需创建本地提交。