<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ cd /home/alice/project\r
-$ git pull /home/bob/myrepo</tt></pre>\r
+$ git pull /home/bob/myrepo master</tt></pre>\r
</div></div>\r
-<p>This actually pulls changes from the branch in Bob's repository named\r
-"master". Alice could request a different branch by adding the name\r
-of the branch to the end of the git pull command line.</p>\r
-<p>This merges Bob's changes into her repository; "git log" will\r
-now show the new commits. If Alice has made her own changes in the\r
-meantime, then Bob's changes will be merged in, and she will need to\r
-manually fix any conflicts.</p>\r
-<p>A more cautious Alice might wish to examine Bob's changes before\r
-pulling them. She can do this by creating a temporary branch just\r
-for the purpose of studying Bob's changes:</p>\r
+<p>This merges the changes from Bob's "master" branch into Alice's\r
+current branch. If Alice has made her own changes in the meantime,\r
+then she may need to manually fix any conflicts. (Note that the\r
+"master" argument in the above command is actually unnecessary, as it\r
+is the default.)</p>\r
+<p>The "pull" command thus performs two operations: it fetches changes\r
+from a remote branch, then merges them into the current branch.</p>\r
+<p>You can perform the first operation alone using the "git fetch"\r
+command. For example, Alice could create a temporary branch just to\r
+track Bob's changes, without merging them with her own, using:</p>\r
<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ git fetch /home/bob/myrepo master:bob-incoming</tt></pre>\r
</div></div>\r
<p>which fetches the changes from Bob's master branch into a new branch\r
-named bob-incoming. (Unlike git pull, git fetch just fetches a copy\r
-of Bob's line of development without doing any merging). Then</p>\r
+named bob-incoming. Then</p>\r
<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ git log -p master..bob-incoming</tt></pre>\r
</div></div>\r
<p>shows a list of all the changes that Bob made since he branched from\r
Alice's master branch.</p>\r
-<p>After examining those changes, and possibly fixing things, Alice can\r
-pull the changes into her master branch:</p>\r
+<p>After examining those changes, and possibly fixing things, Alice\r
+could pull the changes into her master branch:</p>\r
<div class="listingblock">\r
<div class="content">\r
<pre><tt>$ git checkout master\r
</div></div>\r
<p>The last command is a pull from the "bob-incoming" branch in Alice's\r
own repository.</p>\r
+<p>Alice could also perform both steps at once with:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git pull /home/bob/myrepo master:bob-incoming</tt></pre>\r
+</div></div>\r
+<p>This is just like the "git pull /home/bob/myrepo master" that we saw\r
+before, except that it also stores the unmerged changes from bob's\r
+master branch in bob-incoming before merging them into Alice's\r
+current branch. Note that git pull always merges into the current\r
+branch, regardless of what else is given on the commandline.</p>\r
<p>Later, Bob can update his repo with Alice's latest changes using</p>\r
<div class="listingblock">\r
<div class="content">\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 22-Nov-2006 08:28:42 UTC\r
+Last updated 26-Nov-2006 07:28:21 UTC\r
</div>\r
</div>\r
</body>\r
------------------------------------------------
$ 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
-"master". Alice could request a different branch by adding the name
-of the branch to the end of the git pull command line.
+This merges the changes from Bob's "master" branch into Alice's
+current branch. If Alice has made her own changes in the meantime,
+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
-now show the new commits. If Alice has made her own changes in the
-meantime, then Bob's changes will be merged in, and she will need to
-manually fix any conflicts.
+The "pull" command thus performs two operations: it fetches changes
+from a remote branch, then merges them into the current branch.
-A more cautious Alice might wish to examine Bob's changes before
-pulling them. She can do this by creating a temporary branch just
-for the purpose of studying Bob's changes:
+You can perform the first operation alone using the "git fetch"
+command. For example, Alice could create a temporary branch just to
+track Bob's changes, without merging them with her own, using:
-------------------------------------
$ git fetch /home/bob/myrepo master:bob-incoming
-------------------------------------
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
-of Bob's line of development without doing any merging). Then
+named bob-incoming. Then
-------------------------------------
$ git log -p master..bob-incoming
shows a list of all the changes that Bob made since he branched from
Alice's master branch.
-After examining those changes, and possibly fixing things, Alice can
-pull the changes into her master branch:
+After examining those changes, and possibly fixing things, Alice
+could pull the changes into her master branch:
-------------------------------------
$ git checkout master
The last command is a pull from the "bob-incoming" branch in Alice's
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
-------------------------------------