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