我对git有严重的问题。我的一个团队成员决定在没有做git pull命令之前做一个Git提交,所以主人头后面所以我决定做一个git push --force。现在git分支都搞砸了,我不知道如何改变它。我附上了截图,以显示我在说什么。
答案 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 reflog
告诉您已经签出的内容,这对撤消错误非常有用git reset [hash] --hard
假装所有事情,因为哈希没有发生。将来,如果你需要强迫某些东西,想想你是否应该先检查一下。如果你正在与Git作斗争,那通常就是你忽视某些事情的迹象。
答案 1 :(得分:1)
由于您是一个团队,因此您的某个团队成员有可能在其本地系统中拥有旧master
。只需从该系统强行推送即可恢复远程Git仓库。
然后回到创建最近提交的团队成员,将旧的master
拉到他的系统上,解决冲突(如果有的话)并按正常方式进行推送。
答案 2 :(得分:1)