当我使用
克隆远程存储库时git clone 'repo_url'
git pull
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 时:这就是它的样子......
$ 分支 -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”,它尝试 merge ,但由于冲突而失败...
我觉得... 远程仓库的 HEAD 指向最新的提交,origin/master 指向一个不同的、较旧的提交... 我可以在运行 git show 时验证这一点...
最佳答案
不确定原因,除非:
- 有一个
git push --force
由其他人在origin
上完成,在您克隆 repo 和 pull 相同的 repo 之间完成 - 获取 refspec (
git config --get remote.origin.fetch
) 不是+refs/heads/*:refs/remotes/origin/*
。
但是你可以很容易地重置 master:
git reset --hard origin/master
确保master
is tracking origin/master
:
git branch -u origin/master master
并确保您的 push policy is 'simple
' (为了把当前分支推送到远程仓库的同名分支,只有在设置了跟踪那边同名分支的情况下):
git config --global push.default simple
评论总结:根本原因似乎与用于这些操作的 git 1.7.x 版本有关。它似乎在最新的 git1.8.3 上运行良好。
关于git "Your branch and ' origin/master' have diverged"在远程 repo 的新克隆之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474814/