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:

committed by
Junio C Hamano

parent
efe4631def
commit
93ee7823c0
@ -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
|
||||||
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
Reference in New Issue
Block a user