Dear diary, on Tue, Oct 17, 2006 at 02:03:21PM CEST, I got a letter where Matthieu Moy <Matthieu.Moy@xxxxxxx> said that... > I have one repository, say, $repo. > > In it, I have one branch "$repo/bzr.dev" which is an exact mirror of > http://bazaar-vcs.org's branch. > > I also have branches for patches (occasional in my case) that I'll > send to upstream. Say $repo/feature1, $repo/feature2, ... > > If, by mistake, I start hacking on bzr.dev itself, I'll be warned at > commit time, create a branch, and commit in this new branch. I believe > git manages this in a different way, allowing you to commit in this > branch, and creating the branch next time you pull. But you know this > better than I ;-), I never got time to give a real try to git. In fact, in Git the branch is actually created at the moment you clone. For simplicity sake, let's say you cloned just a single branch, not the whole repository (or imagine a repository with a single branch). Then, in your local repository, two branches will be created: 'origin' and 'master'. The origin branch is considered readonly (though Git does not enforce it) and only mirrors the branch in the remote repository. The master branch is the branch you do your work on, and it corresponds to the contents of your working tree. Thus, when you are "updating" your repository (we also call that "pull"), what happens is that new commits are _fetched_ from the remote repository to your 'origin' branch and then the 'origin' branch is _merged_ to the 'master' branch. (You can even separate those two steps and do them manually. So you can e.g. periodically fetch but just check diffs with your master branch and never actually merge, or whatever.) If you never do any local commits on the repository, every time you merge the 'master' branch is ancestor of the 'origin' branch and only so-called fast-forward merge happens - the 'master' branch is updated to point at the same commit as the 'origin' branch. If you _did_ do some local commits, a real merge of the two branches happens and a new merge commit tying the current master and origin history together is recorded on the merge branch. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ #!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj $/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1 lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/) - 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