Git - 如何回滚

时间:2013-09-26 09:11:49

标签: git

我知道之前已经问过这个问题,但是虽然给出的答案git reset --hard HEAD~1有效,但由于服务器处于领先地位,我无法将其推送到服务器。拉动显然让我回到原来的位置。

如何重置服务器?

3 个答案:

答案 0 :(得分:2)

您希望强制推送,只有在您确定更改时才使用此功能。

git push origin --force

答案 1 :(得分:2)

如果你的同事接受将他们自己的本地分支重置为新的origin / master(假设我们正在谈论'master'分支),则强制推送是一个选项。

git fetch
git reset origin/master

(不是reset --hard,因为这会消除正在进行的工作和私人文件)
(请注意,它将取消已添加到索引中的任何内容)


另一个选项,“撤消你的公鸡”(如果你已经推错了提交),它还原它,创建一个新的取消前一个。
请参阅git revert

然后你可以推送(常规推送)恢复提交。

答案 2 :(得分:2)

这一切都取决于项目的惯例。可以肯定的是使用git revert,因为如果这是策略,您可以随后删除提交。如果要还原合并,则需要使用git revert --mainline <parent-number>指定要还原到哪个父级(“主线”)。

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


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

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

这意味着每个人都可以随意使用他们的私人分支机构做任何他们想做的事情,你可以根据自己的意愿改变或放弃提交。另一方面,我们的共享服务器配置为拒绝强制推送到主服务器。

这并不是说我们永远不会重置大师,有时候(可能一年一次)有人可能会意外地推动合并,我们认为它会严重搞砸我们的历史。在这些特殊情况下,我们的一位Git-gurus会给整个团队写一封电子邮件,解释即将发生的事情以及更新本地克隆的步骤。