Documentation: clarify tutorial pull/merge discussion

Attempt to clarify somewhat the difference between pull and merge,
and give a little more details on the pull syntax.

I'm still not happy with this section: the explanation of the origin
branch isn't great, but maybe that should be left alone pending the
use-separate-remotes change; and we need to explain how to set up a
public repository and push to it.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
J. Bruce Fields
2006-11-25 22:45:02 -05:00
committed by Junio C Hamano
parent efe4631def
commit 93ee7823c0

View File

@ -209,29 +209,28 @@ at /home/bob/myrepo. She does this with:
------------------------------------------------ ------------------------------------------------
$ cd /home/alice/project $ cd /home/alice/project
$ git pull /home/bob/myrepo $ git pull /home/bob/myrepo master
------------------------------------------------ ------------------------------------------------
This actually pulls changes from the branch in Bob's repository named This merges the changes from Bob's "master" branch into Alice's
"master". Alice could request a different branch by adding the name current branch. If Alice has made her own changes in the meantime,
of the branch to the end of the git pull command line. then she may need to manually fix any conflicts. (Note that the
"master" argument in the above command is actually unnecessary, as it
is the default.)
This merges Bob's changes into her repository; "git log" will The "pull" command thus performs two operations: it fetches changes
now show the new commits. If Alice has made her own changes in the from a remote branch, then merges them into the current branch.
meantime, then Bob's changes will be merged in, and she will need to
manually fix any conflicts.
A more cautious Alice might wish to examine Bob's changes before You can perform the first operation alone using the "git fetch"
pulling them. She can do this by creating a temporary branch just command. For example, Alice could create a temporary branch just to
for the purpose of studying Bob's changes: track Bob's changes, without merging them with her own, using:
------------------------------------- -------------------------------------
$ git fetch /home/bob/myrepo master:bob-incoming $ git fetch /home/bob/myrepo master:bob-incoming
------------------------------------- -------------------------------------
which fetches the changes from Bob's master branch into a new branch which fetches the changes from Bob's master branch into a new branch
named bob-incoming. (Unlike git pull, git fetch just fetches a copy named bob-incoming. Then
of Bob's line of development without doing any merging). Then
------------------------------------- -------------------------------------
$ git log -p master..bob-incoming $ git log -p master..bob-incoming
@ -240,8 +239,8 @@ $ git log -p master..bob-incoming
shows a list of all the changes that Bob made since he branched from shows a list of all the changes that Bob made since he branched from
Alice's master branch. Alice's master branch.
After examining those changes, and possibly fixing things, Alice can After examining those changes, and possibly fixing things, Alice
pull the changes into her master branch: could pull the changes into her master branch:
------------------------------------- -------------------------------------
$ git checkout master $ git checkout master
@ -251,6 +250,18 @@ $ git pull . bob-incoming
The last command is a pull from the "bob-incoming" branch in Alice's The last command is a pull from the "bob-incoming" branch in Alice's
own repository. own repository.
Alice could also perform both steps at once with:
-------------------------------------
$ git pull /home/bob/myrepo master:bob-incoming
-------------------------------------
This is just like the "git pull /home/bob/myrepo master" that we saw
before, except that it also stores the unmerged changes from bob's
master branch in bob-incoming before merging them into Alice's
current branch. Note that git pull always merges into the current
branch, regardless of what else is given on the commandline.
Later, Bob can update his repo with Alice's latest changes using Later, Bob can update his repo with Alice's latest changes using
------------------------------------- -------------------------------------