Git 如何返回到上一个主分支

Git 如何返回到上一个主分支,git,github,Git,Github,我对git有一个严重的问题。我的一个团队成员决定在不执行Git pull命令的情况下执行Git提交,因此主控负责人在后面,所以我决定执行Git push--force。现在git分支都乱七八糟了,我不知道如何改变它。我附上了一个截图来显示我在说什么 由于您是一个团队,您的团队成员中有一位可能在其本地系统中拥有旧的主系统。只需从该系统强制推送即可恢复远程Git repo 然后返回到创建最近提交的团队成员,将旧的主控拉到他的系统上,解决冲突(如果有),并像通常那样推送。对您来说最简单的方法是使用主分

我对git有一个严重的问题。我的一个团队成员决定在不执行Git pull命令的情况下执行Git提交,因此主控负责人在后面,所以我决定执行Git push--force。现在git分支都乱七八糟了,我不知道如何改变它。我附上了一个截图来显示我在说什么


由于您是一个团队,您的团队成员中有一位可能在其本地系统中拥有旧的
主系统。只需从该系统强制推送即可恢复远程Git repo


然后返回到创建最近提交的团队成员,将旧的
主控
拉到他的系统上,解决冲突(如果有),并像通常那样推送。

对您来说最简单的方法是使用主分支进行一次提交,这类似于:

git revert HEAD~1

还请检查给出的答案,以了解不同恢复提交的详细说明。

首先,不要惊慌

接下来,要求其他人不要推动或拉动,直到你推动的回购协议再次变得整洁。如果您转到那个特定的机器,您可以使用
git reflog
查看它在发生这种情况之前的位置。其他同事也可能在他们的回购协议中有一份远程回购协议的主分支的副本,如果他们没有使用混乱的版本的话。使用任一方法查找最后一次合理提交的哈希

如果远程服务器是一个常规的repo,而不是headless,那么您可以简单地使用
git checkout master
来确保您位于master分支上,然后
git reset[last known good commit hash]--hard
将其设置回原来的状态。这只是假装自那次承诺以来的一切都没有发生。如果你不确定自己在做什么,这种事情可能会很危险,所以一定要先做备份

现在回购协议又恢复正常,其他所有人都可以退出回购协议,并再次推动回购协议

接下来是做出有问题承诺的人。他们可以做同样的事情:
git checkout master
转到主分支的本地副本,然后
git reset[他们已经拉入的最后一个已知的好提交散列]——hard
将其移回原来的位置,然后
git pull[远程服务器名称]master
获取后续更改

然后他们将不得不再次合并更改

要记住的要点是:

  • 当事情出错时,在做任何激烈的事情之前做一次备份
  • 不要惊慌,您可以使用Git从本质上重写历史
  • git reflog
    告诉您已签出的内容,这对于消除错误非常有用
  • git reset[hash]——hard
    假装自该散列之后的一切都没有发生
在将来,如果你需要强迫别人做某事,想想是否有什么事情你应该先检查一下。如果你在与Git抗争,这通常是你忽略了某些东西的迹象