5

当我克隆一个远程存储库时

  1. git clone 'repo_url'
  2. git pull
  3. git status

我收到这条消息 -

On branch master
Your branch and 'origin/master' have diverged,
and have 41 and 20 different commits each, respectively

当我使用时,git pull -a我没有这个问题。

远程仓库上的东西是否不同步?与 HEAD 和主人?我如何解决它?

编辑 1:

当我运行 git branch -a 时:这就是它的样子......

$ git 分支 -a

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/clothes
  remotes/origin/dunnesBranch
  remotes/origin/master

编辑 2:

在我看来,origin/master 没有指向最新的代码......我运行了“git clone” git reset --hard origin/master ,然后运行了一个“git pull”,它尝试了一个由于冲突而失败的合并......

我认为...远程仓库的 HEAD 指向最新提交,origin/master 指向不同的较旧提交...我可以在运行 git show 时验证这一点...

4

2 回答 2

7

不确定原因,除非:

  • git push --forceorigin你克隆 repo 和你提取同一个 repo 之间有一个由其他人完成的
  • fetch refspec( git config --get remote.origin.fetch) 不是+refs/heads/*:refs/remotes/origin/*

但是你可以很容易地重置主人:

git reset --hard origin/master

确保master正在跟踪origin/master

git branch -u origin/master master

并确保您的推送策略是“ simple(为了将当前分支推送到远程存储库中的同名,只有当它设置为跟踪那里的同名分支时):

 git config --global push.default simple

评论摘要:根本原因似乎与用于这些操作的 1.7.x 版本的 git 有关。最新的 git1.8.3 似乎可以正常工作。

于 2013-07-05T06:06:24.357 回答
1

这通常发生在通过“修改”、“重置”或类似的 git 命令更改原始历史记录时,有关详细信息,请参阅此处

于 2013-07-04T16:57:43.963 回答