On Fri, Jan 29, 2010 at 04:51:18PM -0500, Nicolas Pitre wrote: > > Using a detached head is a more advanced feature than wanting to > > checkout a remote branch locally, creating a local tracking branch. As > > such, 'git checkout origin/topic' now means the same as 'git checkout > > -t origin/topic', and you can get the old behavior back by doing 'git > > checkout origin/topic^0'. > > What purpose does this "feature" serve? Making sure people remain > stupid and get even more confused when the special dwimery doesn't work > because they don't know the difference between a local branch and a > remote tracking branch? > > And now people will be left wondering why after a fetch they don't get > the latest stuff when they do "git checkout topic" again. Is this any > better? I am entering the discussion a bit late, and things have moved on from this point, but I wanted to mention that I have in the past made the same argument that you have in your second paragraph (that you leave users _more_ confused after a fetch), but somebody (I think Jay) managed to convince me otherwise. The saving feature is that we now print out the symmetric difference information between a branch and its upstream during checkout. So the user experience looks like: $ git checkout topic Branch topic set up to track remote branch topic from origin. Switched to a new branch 'topic' ... time passes ... $ git fetch ... 9f137a4..22ac6a6 topic -> origin/topic $ git checkout topic Switched to branch 'topic' Your branch is behind 'origin/topic' by 6 commits, and can be fast-forwarded. So I think it is not quite as bad as at least I had originally thought. There are still a few rough edges, though: 1. If I stay on the 'topic' branch and run "git fetch", then I don't see the checkout message. If I don't understand that a local branch has been created, I might expect the new changes to be present. But they're not. If I do a pull instead, it does "just work", even if I am clueless about the local branch. I wonder if a "fetch" which updates the upstream branch of the current HEAD should print something like the "Your branch is behind..." message. 2. If I am clueless that the local branch exists, I can see that there are new changes that I can "fast forward". But if I am clueless about local branches, do I know that means I need to run "git merge origin/topic"? However, I can't think of an improved message that would make the situation clear without adding a bunch of annoying text. -Peff -- 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