Following Nvie's git branching model, why do I end up with 'develop' and 'master' each 1 ahead and 1 behind the other after merging the same 'release' branch into both? If the same 'release' branch is merged into each, shouldn't master and develop agree?
x 84a628d (origin/develop, develop) Merge branch 'release-v3.0.1' into develop
|\
| | x 2e4d60b (HEAD, v3.0.1, origin/master, master) Merge branch 'release-v3.0.1'
| | |\
| | |/
| |/|
| x | 716ce96 (release-v3.0.1) Version 3.0.1
|/ /
x | fe3b54d Some more more code
x | 3683892 Some more code
x | 8c0b835 'develop' branch code
|/
x d051b54 (v3.0) Baseline merge. Merge remote-tracking branch 'origin/master'
$ git log origin/master ^origin/develop
commit 2e4d60b7d6760b4f6b2328ab06150b020b0d279f
Merge: d051b54 716ce96
Author: Todd
Date: Tue Mar 26 11:27:59 2013 -0400
Merge branch 'release-v3.0.1'
$ git log origin/develop ^origin/master
commit 84a628d96653ed196faa6387c8b208badf23aa75
Merge: fe3b54d 716ce96
Author: Todd
Date: Tue Mar 26 11:31:53 2013 -0400
Merge branch 'release-v3.0.1' into develop
What am I missing?
This command displays all commits reachable from
origin/master
but not fromorigin/develop
This command displays all commits reachable from
origin/develop
but not fromorigin/master
The output from both these above commands seem to be consistent with the graph you've shown.
If you intend to find out the difference in the contents of the 2 branches, you should be using the
git diff
command instead.If you want only the list of files which are different, you can use the
--name-status
option:In git, a commit's SHA1 is calculated based on the parent commit's SHA1, the commit message, the timestamps, and lot of other such information. Although you've merged the same
release-v3.0.1
branch into bothmaster
anddevelop
, you've done it as 2 independent merges at 2 different time instants. This would obviously not produce the same commit SHA1 for both.What you should've done instead is one of the following:
Option 1:
Option 2:
This way you would end up with both
master
anddevelop
branches pointing to the same commit.You could get to the same state even now by merging either
master
intodevelop
or the other way around, and doing a fast-forward merge on the other branch.