git "Your branch and ' origin/master' have diverged"在远程 repo 的新克隆之后

标签 git

当我使用

克隆远程存储库时
  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 时:这就是它的样子......

$ 分支 -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/

相关文章:

android - repo init 后如何覆盖 default.xml

git - 如何更改 VSCode 中的远程源?

git - 压缩提交的标签会发生什么?

linux - 使用 SSH 使用同一帐户推送到 2 个不同的 repo 协议(protocol)?

git - 在 Ubuntu 13.10 上降级 git

ruby-on-rails - 使用 Git 和 Heroku 进行适当的持续集成和持续部署

git - 将分支从主提交移动到上一个主提交

git - 为什么git使用ssh使用git作为用户名

ios - 当gitignore没有提及时,Git会忽略podfile

git - merge pull 请求的一部分