44
votes

git status tells me that my branch and the one I started from on another repository have diverged:

# On branch master
# Your branch and 'origin/master' have diverged,
# and have 13 and 13 different commit(s) each, respectively.

but the commit history for each is identical. That is, git log shows the same commits, in the same order, with the same SHA-1 hashes. That's for the last 13 commits, and everything before that too.

What's going on?! Or have I misunderstood something fundamental - git's all new to me.

It's quite a long story how I got into this mess - git-svn, cygwin, EGit, pull --rebase with spurious conflicts - but I'm wondering if it's possible this "divergence without any differences" is due to newlines? I've opened files in notepad, and read lots about svn/git/cygwin and CRLF but without any revelations.

Edit OK. Most of the above isn't really the problem. Maybe I don't understand git log or something has got messed up somewhere...

I have two repositories. If I go to rep_A and run git log I get the same result (notably same SHA-1) as if I go to rep_B and run git log.

At rep_A, if I run git log origin/master I get the different commit history I expect. (Different SHA-1s, but same messages - how I created this mess is another story.)

git remote -v show assures me that the origin is where I expect it to be.

git log, on rep_B, isn't behaving how I expected. It's like it's giving me the commit history for rep_A. What have I missed?

1
How are you viewing the commit history for each one? Are you doing git log master and git log origin/master or something else?Dan Moulding
Oh. I was doing git log from the root directory of each repository. I just ran your commands and the commits are different. Phew/Doh! Clearly I didn't understand what git log was doing. Sorry to have misled. Just need to figure out how to get rid of this question now...Jon Stafford
don't get rid of the question, post an answer yourself and accept it. That will remove it from the "Unanswered" tab and show the answer clearly for future people with the same problem. And if your answer gets 3 upvotes, you get the Self-Learner badge :)Philip Potter

1 Answers

23
votes

It looks like you also forgot to update remote repositories. So do git remote update in rep_A (it will probably warn it is not fast-forward update as you seem to do rebase on both ends) and then the histories should be identical.