2

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

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

两者应该是同步的。我不知道我是怎么来到这里的。我想要在服务器上的 origin/master 中的所有内容。我不在乎我是否丢失了最后几次提交的更改,这并不重要。如何使这些恢复同步,以便我可以再次像往常一样推拉?

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

4

2 回答 2

1

此消息意味着您服务器上的主分支具有不在远程的提交。如果有人在服务器上提交并且您不希望任何人从这个特定的结帐中提交 - 这将导致这种情况。

看看这两个提交是什么

..不在遥控器中:

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

删除这两个提交

如果您不想保留这两个提交;将您的主分支更改为与远程的主分支完全匹配:

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

保留这两个提交

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

git push origin master
于 2013-04-01T14:39:57.193 回答
1

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

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

此外,gitk --all对于了解您拥有的存储库状态以及您的本地存储库如何认为它与其远程相关是非常有用的。

于 2013-04-01T14:42:10.080 回答