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 –

  • Git check if there is outstanding commits to push
  • Git clone error warning: refname '' is ambiguous. Git normally never creates a ref that ends with 40 hex characters
  • How to create digital object identifier (DOI) for bitbucket repository?
  • How to git pull from public repo via ssh without a key?
  • Git: avoiding frequently-changed lines
  • How to remove files from the GitHub repository?
  • 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
      remotes/origin/clothes
      remotes/origin/dunnesBranch
      remotes/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…

  • How to make existing branch an orphan in git
  • git config: list all variables and their default values
  • Installing git through .ebextensions on Elastic Beanstalk
  • Visual Studio 2010/2012 Git Plugin
  • Can git merge upstream changes both to a file and a copy within a repository?
  • Creating multiple git branches using a bashrc sh alias
  • 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.