Re: Pull and fetch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 23 Nov 2006 20:39:50 +0100
Paolo Ciarrocchi <paolo.ciarrocchi@xxxxxxxxx> wrote:


> OK, make sense. So let's try with an experiment:
> paolo@paolo-desktop:~$ mkdir test
> paolo@paolo-desktop:~$ cd test
> paolo@paolo-desktop:~/test$ git-init-db 
> defaulting to local storage area

At this point your "master" branch will be empty.  You can see
this by doing a "git log"

> paolo@paolo-desktop:~/test$ git fetch ../git master:testbranch
> warning: no common commits
> remote: Generating pack...

If you do "git log" at this point you'll see your master branch
is still empty.  All you've done is fetched the remote branch
into your new repo as "testbranch"

> [skip]
> paolo@paolo-desktop:~/test$ git pull ../git master:testbranchpull
> * refs/heads/testbranchpull: storing branch 'master' of ../git
>   commit: e945f95

This command is different than fetch.  After fetching the remote
branch into your repo as "testbranchpull", it then merges it with
your currently checked out branch (master).  At this point if
you do a "git log"  you'll see your master is now populated with
the results of the merge (well in this case a fast forward).

So this nicely shows the difference of fetch and pull, and explains
how your "master" branch came to have something in it.

 
> Now I have 3 branches:
> paolo@paolo-desktop:~/test$ git branch
> * master
>   testbranch
>   testbranchpull
> 
> All the branches have the same content, I expect to see differences between testbranch 
> and testbranchpull. The first one is the end result of a fetch, the second one is
> the end result of a pull.

Yes, they will all have the same content.  As your local repo diverges
from the remote (as you make local commits) the difference between
fetch and pull will become more obvious and pronounced.

> git status always says:
>   nothing to commit
> 
> Why?

This just means you have no uncommitted local changes in your repo.  Edit
one of the file, and before committing the change, do "git status" again
and it will list the file as modified.

> What will happen if I repeat the same commands:
>   git fetch ../git master:testbranch
>   git pull ../git master:testbranchpull
> after a change in the git master branch?

Try it out :o)

Afterward, both testbranch and testbranchpull will be direct copies
of the other repo's master.  The fetch command will do nothing to
"master".  However, after updating your testbranchpull, the pull
command will merge (or fast forward) its contents into "master".

Cheers,
Sean
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]