Nothing like an example. Here's how to get into this situation:
(starting in an empty directory):
> git init
> echo "hello" > a.txt
> git add -A
> git commit -m "Created a on master"
> git branch test
> git checkout test
At this point a.txt are identical on master and test branches
> echo "goodbye" > a.txt
> git add -u
> git commit -m "Changed a on test"
Now (obviously) there will be differences:
> git diff --name-status master
M a.txt
yet git has nothing to merge:
> git merge master
Already up-to-date.
That's because the changes are made here on test, not on master. If you switch to test, diff will report similarly, but merge will now merge in the changes from test to master:
> git checkout master
> git diff --name-status test
M a.txt
> git merge test
Updating 088cd9d..3d8c8e2
Fast-forward
a.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Git merging is directional, merging from branch A to B is not the same as merging from B to A.