Git - 如何回滚

Luk*_*ett 3 git

我知道这个问题之前已经被问过,但尽管给定的答案git reset --hard HEAD~1有效,但我无法将其推送到服务器,因为服务器位于前面。拉动显然会让我回到原来的位置。

如何重置服务器?

Tob*_*ias 5

这一切都取决于项目的惯例。安全的选择是使用,git revert因为如果这是政策的话,您可以稍后删除提交。如果要恢复合并,则需要使用 指定要恢复到的父级(“主线”)git revert --mainline <parent-number>

您应该要求项目​​的维护人员解释在您的具体情况下该怎么做。


在我们的团队中,我们使用以下一组规则:

  • 仅使用 rebase ( branch.autosetuprebase=always)拉取
  • master是唯一的“公共”分支
  • 即使推送到我们的共享服务器,开发分支仍保持“私有”

这意味着每个人都可以自由地对他们的私人分支做任何他们想做的事情,您可以根据需要重新调整或删除提交。另一方面,我们的共享服务器被配置为拒绝强制推送到主服务器。

这并不是说我们从不重置master,有时(也许每年一次)有人可能会意外地推送合并,我们认为这会严重破坏我们的历史。在这些特殊情况下,我们的一位 git 专家会向整个团队写一封电子邮件,解释将要发生的情况以及更新本地克隆所需采取的步骤。