tutorial: shorthand for remotes but show distributed nature of git
* Promiscous pull shows the distributed nature of git better. * Add a new step after that to teach "remote add". * Highlight that with the shorthand defined you will get remote tracking branches for free. * Fix Alice's workflow. Signed-off-by: Santi Béjar <sbejar@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
8b616f24ea
commit
c1ff284a70
|
@ -283,12 +283,10 @@ at /home/bob/myrepo. She does this with:
|
||||||
|
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
$ cd /home/alice/project
|
$ cd /home/alice/project
|
||||||
$ git remote add bob /home/bob/myrepo
|
$ git pull /home/bob/myrepo master
|
||||||
$ git pull bob master
|
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
First it adds the "remote" Bob's repository with the name "bob" and
|
This merges the changes from Bob's "master" branch into Alice's
|
||||||
then it merges the changes from Bob's "master" branch into Alice's
|
|
||||||
current branch. If Alice has made her own changes in the meantime,
|
current branch. If Alice has made her own changes in the meantime,
|
||||||
then she may need to manually fix any conflicts. (Note that the
|
then she may need to manually fix any conflicts. (Note that the
|
||||||
"master" argument in the above command is actually unnecessary, as it
|
"master" argument in the above command is actually unnecessary, as it
|
||||||
|
@ -297,14 +295,27 @@ is the default.)
|
||||||
The "pull" command thus performs two operations: it fetches changes
|
The "pull" command thus performs two operations: it fetches changes
|
||||||
from a remote branch, then merges them into the current branch.
|
from a remote branch, then merges them into the current branch.
|
||||||
|
|
||||||
You can perform the first operation alone using the "git fetch"
|
When you are working in a small closely knit group, it is not
|
||||||
command without merging them with her own branch, using:
|
unusual to interact with the same repository over and over
|
||||||
|
again. By defining 'remote' repository shorthand, you can make
|
||||||
|
it easier:
|
||||||
|
|
||||||
|
------------------------------------------------
|
||||||
|
$ git remote add bob /home/bob/myrepo
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
With this, you can perform the first operation alone using the
|
||||||
|
"git fetch" command without merging them with her own branch,
|
||||||
|
using:
|
||||||
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
$ git fetch bob
|
$ git fetch bob
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
which fetches the changes from Bob's branches. Then
|
Unlike the longhand form, when Alice fetches from Bob using a
|
||||||
|
remote repository shorthand set up with `git remote`, what was
|
||||||
|
fetched is stored in a remote tracking branch, in this case
|
||||||
|
`bob/master`. So after this:
|
||||||
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
$ git log -p master..bob/master
|
$ git log -p master..bob/master
|
||||||
|
@ -313,28 +324,22 @@ $ git log -p master..bob/master
|
||||||
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
|
After examining those changes, Alice
|
||||||
could merge the changes into her master branch:
|
could merge the changes into her master branch:
|
||||||
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
$ git checkout master
|
|
||||||
$ git merge bob/master
|
$ git merge bob/master
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
The last command is a merge of the "bob/master" branch in Alice's
|
This `merge` can also be done by 'pulling from her own remote
|
||||||
own repository.
|
tracking branch', like this:
|
||||||
|
|
||||||
Alice could also perform both steps at once with:
|
|
||||||
|
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
$ git pull bob
|
$ git pull . remotes/bob/master
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
This is just like the "git pull bob master" that we saw
|
Note that git pull always merges into the current branch,
|
||||||
before, except that it also stores the unmerged changes from bob's
|
regardless of what else is given on the commandline.
|
||||||
master branch in bob/master 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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue