merge is used to bring two (or more) branches together.
A little example:
$ # on branch A: $ # create new branch B $ git checkout -b B $ # edit files $ git commit -am "commit on branch B" $ # create new branch C from A $ git checkout -b C A $ # edit files $ git commit -am "commit on branch C" $ # go back to branch A $ git checkout A $ # edit files $ git commit -am "commit on branch A"
So now there are three separate branches (namely A, B, and C) with different heads.
To get the changes from B and C back to A, check out A (already done in this example) and then use the merge command:
$ # create an octopus merge $ git merge B C
Your history will then look something like this:
…-o-o-x-------A |\ /| | B---/ | \ / C---/
Alternatively, to create "regular" merge commits (with exactly two parents each), run git merge twice for each branch that you want to merge:
$ git merge B $ git merge C
To get a history similar to:
…-o-o-x-------M-A |\ / / | B---/ / \ / C---/
If you want to merge across repository/computer borders, have a look at git pull command, e.g. from the PC with branch A (this example will create two new commits):
$ # pull branch B $ git pull ssh://host/… B $ # pull branch C $ git pull ssh://host/… C