我该如何解决这个混乱的混乱局面?


How do I sort out this git mess? Files on server ahead by two commits

本问题已经有最佳答案,请猛点这里访问。

每当我在服务器上执行git pull时,我就会收到消息;

1
Your branch is ahead of origin/master by 2 commits.

这两者应该是同步的。我不知道我是怎么到这里的。我在服务器上想要的原始/主服务器上的所有内容。我不在乎在最后几次提交中是否丢失了更改,这并不重要。我怎样才能让它们恢复同步,让我能像平常一样推拉?

编辑:我运行git checkout origin/master并将服务器上的代码恢复到以前的状态,但现在我处于分离头状态。我该怎么摆脱?


AD7Six的答案将丢弃您的本地更改。您还应该能够简单地将您在本地拥有的内容发送到服务器:

1
2
git checkout master # Get back on a real branch from the detached HEAD
git push origin master

另外,gitk --all对于理解您拥有的存储库状态以及本地存储库认为它与远程设备的关系非常有用。


此消息表示服务器上的主分支具有不在远程中的提交。如果有人在服务器上提交了,而您不希望任何人从这个特定的签出中提交-这将导致这种情况。

看看这两个承诺是什么

…不在遥控器中的:

1
2
git log origin/master..HEAD # just the commit messages
git diff origin/master..HEAD # the diff

取消这两项承诺

如果存在两个提交,则不希望保留;要将主分支更改为与远程的主分支完全匹配,请执行以下操作:

1
2
git checkout master # make sure you are on your master branch
git reset origin/master --hard # force local history to exactly match the remote.

号保持这两个承诺

如果您确实想保持提交-只需将它们推到远程,您的主分支就会同步:

1
git push origin master