2014-09-01 127 views
0

我有一个git仓库,情况是这样的。如何撤消git中的推送?

过去:反转102

我所做的更改,并将其推到仓库,所以

现:反转103

现在,我想撤消所有的更改,并返回到修订版102所以当用户检查/更新存储库时,它将与rev 102相同。我尝试恢复,但rev 103仍保留在远程存储库中,因此在结帐或更新时,它是rev 103被检出。谢谢。

+0

也许你会发现[这有用](http://stackoverflow.com/questions/1270514/undoing-a-git-push) – ekostadinov 2014-09-01 09:18:29

回答

0

有几种方法,我有时使用的方法如下。

首先将您的标题重置为先前的提交。当然,您可以在重置时指定任何提交。

git reset --hard HEAD~1 

然后力推到远程存储库-f--force-with-lease。后面的选项用于在rev 103之后避免覆盖其他用户的新提交。

git push origin master --force-with-lease 

但前提是远程存储库允许强制推送,因为强制推送是非常危险的,会覆盖历史记录。

+0

此操作可能是危险的,我会建议使用'revert'来代替。如果您进行硬重置并将其推送到远端,则需要确保没有人拉出最后一个版本,因为您正在移除它的所有痕迹!通过使用“revert”动作,你可以避免这种问题 – 2014-09-01 09:34:26

+0

是的,'revert'更安全,但'rev 103'仍然适用于这种情况。根据问题的描述,似乎只是想在没有其他用户意识到的情况下移除“rev 103”。因此,这取决于对危险知识的真正需求。此外,我们可以使用'--force-with-lease'而不是'-f'来避免覆盖其他用户的新提交。 – Landys 2014-09-01 09:52:37

+0

你说得对,我只是想提到在使用远程回购时使用这个命令的风险。 – 2014-09-01 10:01:56