【问题标题】:How to undo a push in git?如何撤消git中的推送?
【发布时间】:2014-09-01 09:16:30
【问题描述】:

我有一个git仓库,场景是这样的。

过去:第 102 版

我进行了更改并将其推送到存储库,所以

现在:第 103 版

现在,我想撤消所有更改并返回到 rev 102,这样当用户签出/更新存储库时,它将与 rev 102 相同。我尝试了 revert,但 rev 103 仍然保留在远程存储库,因此在签出或更新时,它是 rev 103 被签出。谢谢。

【问题讨论】:

标签: git git-push git-revert


【解决方案1】:

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

首先将您的标头重置为上一个提交。当然,您可以在重置时指定任何提交。

git reset --hard HEAD~1

然后使用-f--force-with-lease 强制推送到您的远程存储库。后一个选项用于避免在rev 103 之后覆盖其他用户的新提交(如果有)。

git push origin master --force-with-lease

但前提是远程仓库允许强制推送,因为强制推送真的很危险,会覆盖历史记录。

【讨论】:

  • 这种操作可能很危险,我建议改用revert。如果您进行硬重置并将其推送到遥控器,您需要确保没有人拉出最后一个版本,因为您正在删除它的所有痕迹!通过使用revert 操作,您可以避免此类问题
  • 是的,revert 更安全,但rev 103 仍然适用于这种情况。根据问题的描述,它似乎只是想在其他用户不知情的情况下删除rev 103。因此,这取决于对危险的了解真正想要什么。此外,我们可以使用--force-with-lease 代替-f 以避免覆盖其他用户的新提交。
  • 你说得对,我只是想提一下在使用远程仓库时使用此命令的风险。
猜你喜欢
  • 2013-09-28
  • 2014-05-06
  • 2022-05-31
  • 1970-01-01
  • 2016-10-02
  • 2012-11-08
  • 2011-08-22
  • 2011-01-24
相关资源
最近更新 更多