我该如何解决这个混乱的混乱局面?两个提交前面的服务器上的文件

时间:2013-04-01 14:30:12

标签: git

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

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

两者应该同步。我不知道我是怎么来的。我在服务器上想要的所有原产地/主人。如果我丢失了最后几次提交的更改,我不在乎,这并不重要。如何让它们恢复同步,这样我可以再次正常推拉?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

AD7six的回答将丢弃您当地的更改。您还应该能够将本地的内容发送到服务器:

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

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