I have a branch called master
and another called dev
. Usually, I do tests and improvements on dev
; when done, I merge it into master
, tag it, and release new version of the application.
Now, I face a decision to make in regard to merging:
master
into dev
dev
into master
but I am not really sure how the two are different... Any explanation would be welcome.
git merge master will update your current branch with the changes from your local master branch, the state of which will be that of when you last pulled while on that branch.
Every developer has a different Git branch management strategy, be it the popular GitFlow method or some other, home-grown concoction. But whatever branch management strategy you use, developers aren't supposed to merge master into branches. In fact, the exact opposite is supposed to happen.
Ideally, use smaller branches and commit/merge to main branch more frequently. Failing that, get to a clean commit point in your branch and merge/rebase latest master into your branch - keep it up to date.
If you merge dev into master If master is checked out ( git checkout master ), and you then merge dev ( git merge dev ), you will end up in the following situation: The master branch now points to the new merge commit ( F ), whereas dev still points to the same commit ( E ) as it did before the merge.
The main difference lies in where the master
and dev
branches end up pointing.
Merging one branch into another is not a symmetric operation:
dev
into master
, andmaster
into dev
,are, in general, not equivalent. Here is an illustrative example that explains the difference between the two. Let's assume your repo looks as follows:
dev
into master
If master
is checked out (git checkout master
),
and you then merge dev
(git merge dev
), you will end up in the following situation:
The master
branch now points to the new merge commit (F
), whereas dev
still points to the same commit (E
) as it did before the merge.
master
into dev
If, on the other hand, dev
is checked out (git checkout dev
),
and you then merge master
(git merge master
), you will end up in the following situation:
The dev
branch now points to the new merge commit (F'
, whereas master
still points to the same commit as it did before the merge (D
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With