I've worked myself into a situation that is not making sense to me. I'll try to describe it as best I can.
I have a development branch and I've merged master into it via git checkout develpment && git merge master. I didn't get any merge conflicts here.
There is a specific commit that I'm interested in, let's say it's abcd123. When I run git branch --contains abcd123, it reports that both development and master contain abcd123. When I do git log, it shows abcd123 in the list of commits, both on development and on master.
git show abcd123 shows that contains changes to two files. But I can't seem to find these changes. When I look at the files, I don't see those changes, neither on development nor on master. When I inspect git log -- path/to/file1, I don't see abcd123, same for git log -- path/to/file2.
What's going on here? How can the commit be present, but the changes are apparently not there?
It is possible that abcd123 was originally introduced in another branch (other than development) that was merged into master. I don't know if that could make a difference.
By the way, when I try git checkout master && git merge development (after merging master into development as shown above) I get a lot of merge conflicts, including file1 and file2. So that seems to show that master was not actually merged into development -- shouldn't git merge development succeed if git merge master was already executed? To cause more confusion, git branch --merged development says that master has been merged into development. I guess that is consistent with git merge master ....
Any advice at this point is much appreciated.
EDIT: At this point it appears that the problem is due to a merge that failed or was messed up in some way. If anyone is still reading, I think the direction that torek's answer is going seems most fruitful.