1

我知道以前有人问过这个问题,但是虽然给定的答案git reset --hard HEAD~1有效,但我无法将它推送到服务器,因为服务器在前面。拉显然会让我回到原来的位置。

如何重置服务器?

4

3 回答 3

3

这一切都取决于项目的约定。安全的赌注是使用git revert,因为如果这是策略,您以后可以随时放弃提交。如果要还原合并,则需要指定要还原为(“主线”)的父级git revert --mainline <parent-number>

您应该要求项目​​的维护者解释在您的特定情况下该怎么做。


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

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

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

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

于 2013-09-26T09:58:01.640 回答
2

如果你想强制推动,只有在你确定改变时才使用它。

git push origin --force
于 2013-09-26T09:14:12.443 回答
2

如果您的同事接受将他们自己的本地分支重置为新的源/主分支(假设我们正在谈论那个“主”分支),则强制推送是一种选择。

git fetch
git reset origin/master

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


另一个选项,“撤消你的 cock ups”(如果你已经推送了错误的提交),它会恢复它,创建一个新的取消之前的提交。
git revert

然后,您可以推送(定期推送)恢复提交。

于 2013-09-26T09:25:34.807 回答