git “Your branch and 'origin/master' have diverged” after fresh clone of remote repo

When I clone a remote repository with

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

I get this message –

  • Remove file from commit
  • How to link against a local Rust library? (similar to npm link)
  • Reverting commits originating from various specific branches
  • How can I use git for projects templates?
  • Change the wrong commit message in Git
  • switching branches does not refresh solution explorer visual studio
  • On branch master
    Your branch and 'origin/master' have diverged,
    and have 41 and 20 different commits each, respectively

    When I use git pull -a I do not have this issue.

    Are things out of sync on the remote repo? with the HEAD and the master ?
    How do I fix it?

    EDIT 1 :

    when I run git branch -a : this is what it looks like…

    $ git branch -a

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

    EDIT 2 :

    It seems to me that origin/master is not pointing to the latest code…
    I ran ‘git clone ‘ then
    git reset --hard origin/master
    and then a ‘git pull’ and it attempted a merge which failed due to conflicts…

    I think…
    The HEAD of the remote repo is pointing to the latest commit, origin/master is pointing to a different, older commit…
    I can verify this when I run git show…

  • Unable to understand Git branch, merge and rebase
  • git status displays crazy multiple levels of directories that don't exist
  • Why does Git use SHA-1 as version numbers?
  • Re-open deleted Git branch
  • GIT creating extraneous ~HEAD files during rebase
  • How can I rewrite history so that all files, except the ones I already moved, are in a subdirectory?
  • 2 Solutions collect form web for “git “Your branch and 'origin/master' have diverged” after fresh clone of remote repo”

    Not sure about the cause, unless:

    • there is a git push --force on origin by someone else, done between you cloning the repo, and you pulling that same repo
    • the fetch refspec (git config --get remote.origin.fetch) isn’t +refs/heads/*:refs/remotes/origin/*.

    But you can reset master easily enough:

    git reset --hard origin/master

    Make sure master is tracking origin/master:

    git branch -u origin/master master

    And make sure your push policy is ‘simple‘ (in order to push the current branch out to the same name at the remote repository, only when it is set to track the branch with the same name over there):

     git config --global push.default simple

    Summary of the comments: the root cause seems to be related to the 1.7.x version of git used for those operation. It seems to work fine with a latest git1.8.3.

    This usually happens when the origin history has been altered by means of “amend”, “reset” or similar git commands, see here for some details

    Git Baby is a git and github fan, let's start git clone.