如何回到之前的主分支

Jam*_*ake 2 git github

我有一个严重的 git 问题。我的一个团队成员决定在不执行 git pull 命令之前执行 Git 提交,因此主负责人落后,所以我决定执行 git push --force。现在git分支都乱了,不知道怎么改。我附上了一个截图来显示我在说什么。

在此处输入图片说明

小智 5

首先,不要惊慌!

接下来,请不要让其他人推动或拉动,直到您推送到的存储库再次整洁。如果你去那台特定的机器,你可以使用git reflog它来查看发生这种情况之前它在哪里。其他同事也可能在他们的 repo 中拥有这个远程 repo 的 master 分支的副本,如果他们没有拉入凌乱的版本。使用任一方法查找最后一次合理提交的哈希值。

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

现在这个 repo 又干净了,其他人都可以从中拉出来并再次推送到它。

接下来是做出有问题提交的人。他们可以做同样的事情:git checkout master转到他们本地的 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 作斗争,这通常表明您忽略了某些东西。