如何回到以前的主分支

时间:2017-03-15 13:37:46

标签: git github

我对git有严重的问题。我的一个团队成员决定在没有做git pull命令之前做一个Git提交,所以主人头后面所以我决定做一个git push --force。现在git分支都搞砸了,我不知道如何改变它。我附上了截图,以显示我在说什么。

enter image description here

3 个答案:

答案 0 :(得分:3)

首先,不要惊慌!

接下来,要求没有其他人推或拉,直到你推到的回购再次整洁。如果你去那台特定的机器,你可以使用git reflog查看它发生之前的位置。其他同事也可能在他们的回购中有一个这个远程回购的主分支的副本,如果他们还没有陷入凌乱的版本。使用任一方法查找最后一个明智提交的哈希值。

如果远程服务器是常规仓库,而不是无头,那么您只需使用git checkout master确保您在主分支上,然后git reset [last known good commit hash] --hard将其设置回来它是怎么回事。这简单地假装自那次提交以来的所有事情都没有发生。如果您不确定自己在做什么,这种事情会很危险,所以请务必先备份!

现在回购再次清理,其他所有人都可以从中取出并再次推销。

接下来是提出有问题的提交的人。他们可以做同样的事情:git checkout master转到他们​​的主分支的本地副本,然后git reset [last known good commit hash that they've already pulled in] --hard将其移回原来的位置,然后git pull [remote server name] master以获得后续更改

然后他们必须再次合并他们的更改。

要记住的要点是:

  • 当出现问题时,请在做任何激烈的事情之前做好备份!
  • 不要惊慌,你可以使用Git来重写历史
  • git reflog告诉您已经签出的内容,这对撤消错误非常有用
  • git reset [hash] --hard假装所有事情,因为哈希没有发生。

将来,如果你需要强迫某些东西,想想你是否应该先检查一下。如果你正在与Git作斗争,那通常就是你忽视某些事情的迹象。

答案 1 :(得分:1)

由于您是一个团队,因此您的某个团队成员有可能在其本地系统中拥有旧master。只需从该系统强行推送即可恢复远程Git仓库。

然后回到创建最近提交的团队成员,将旧的master拉到他的系统上,解决冲突(如果有的话)并按正常方式进行推送。

答案 2 :(得分:1)

对您来说最简单的方法是使用您的主分支返回一个提交,如下所示:

git revert HEAD~1

还查看给出here的答案,了解不同还原提交的详细说明。