why does it say “Your branch is ahead of origin/master by 857 commits” when I need to *pull* origin master

后端 未结 5 1105
予麋鹿
予麋鹿 2020-12-24 14:16

Firstly, I\'m aware of a number of similarly worded questions, eg:

  • How can I find the location of origin/master in git, and how do I change it?
  • git:
相关标签:
5条回答
  • 2020-12-24 14:37

    git rebase -p

    It will say First, rewinding head to replay your work on top of it... and you'll be all set, because there's no work to replay.

    0 讨论(0)
  • 2020-12-24 14:39

    I had the same issue. Like the chosen solution points out, I think the problem was the origin/master pointer being out-of-date. I mostly only do git pull origin master and not fetch.

    Since I know I didn't have local changes, I hard reset to master and then fetched to update the pointer, and finally pulled to catch up on the commits on the remote master branch. Like this:

    git reset --hard origin/master
    git fetch origin
    git pull origin master
    

    Hope this helps someone in the future too.

    Edit: also useful On this other question, I found a great solution with useful commands. These worked for me when the above didn't!

    If you get this message after doing a git pull remote branch, try following it up with a git fetch. (Optionally, run git fetch -p to prune deleted branches from the repo)

    Fetch seems to update the local representation of the remote branch, which doesn't necessarily happen when you do a git pull remote branch.

    0 讨论(0)
  • 2020-12-24 14:40

    I had this question too. I searched a bit and found out that, we occasionally run 'git pull upstream master' to fetch the latest changes from upstream master to our local master which is a forked branch. However these updated changes are not pushed to our remote master yet. Hence the message says 'our local is x commits ahead of remote master'. Before proceeding with new code or modification in forked branch environment, it's better to run the following commands

    git checkout master_branch;
    git pull upstream master;
    git push

    0 讨论(0)
  • 2020-12-24 14:49

    In the end, the Actual solution for the question to correct the problem:

    It was because it needed a git push, after a merge. This just happened to me too, same error message. Andy magoon was right also, because when I did the push, I see a clean slate now, with no bytes having been pushed. However, rebasing is not usually the best course.

        $ git status ./
    On branch master-blah1
    Your branch is ahead of 'origin/master-blah1' by 869 commits.
      (use "git push" to publish your local commits)
    nothing to commit, working directory clean
    
    
        $ git push
        Counting objects: 7, done.
        Delta compression using up to 48 threads.
        Compressing objects: 100% (7/7), done.
        Writing objects: 100% (7/7), 653 bytes | 0 bytes/s, done.
        Total 7 (delta 4), reused 0 (delta 0)
    
    $ git status ./
    On branch master-blah1
    Your branch is up-to-date with 'origin/master-blah1'.
    nothing to commit, working directory clean
    
    0 讨论(0)
  • 2020-12-24 15:01

    You are over thinking this. The message isn't saying the remote is behind. It's saying your local repository's recorded commit for 'origin/master' is. At no point in generating that message did git communicate with a remote. It simply looked into the .git directory, and returned the contents of .git/refs/remotes/origin/master. Try it yourself. Both of these commands should return the same thing from the top-level of the repository:

    cat .git/refs/remotes/origin/master
    git rev-parse origin/master
    

    The second command is simply a plumbing command for finding the 'origin/master' pointer. You could replace 'origin/master' with any branch to get the most recent commit on that branch.

    That message is telling you is that your local 'master' is ahead of the commit returned by 'git rev-parse origin/master' by 857 commits. How did this situation arise? I can't say exactly, but I'd put considerable money on you accidentally merging a different branch into 'master'. Every time I've seen this problem, it's a bad merge from user error.

    First, issue git fetch origin to make sure that 'origin/master' pointer is up-to-date. Then, study your git log. Look for something recent you don't expect. Download a program like tig or use gitk to get a visual graph of your commit history. It's a good bet you accidentally issued git pull stable while checked out on 'master'. Or something similar.

    0 讨论(0)
提交回复
热议问题