I just saw this comment under question 20: git-pull's behavior of merging in the first refspec to the current branch is very bad and has caused us serious repository issues in xorg. Most of the folks I've been teaching Git to recently have found `git fetch` to be a very counterintuitive command for fetching things. Especially since `git push` is what's used to send changes to the remote repository. They also find `git pull . foo` as a counterintuitive way to merge changes. Basically I'm seeing users run `git pull` when they probably should have run just `git fetch`; the pull obviously also merges the first refspec in .git/remotes/origin to the current branch and that's usually not what the user wanted, especially when the upstream remote has several branches that the user may be tracking (e.g. stable, dev, experimental). I think its probably too late to change the UI[*1*] but I think it is definately an issue for folks learning Git. Calling push push, fetch fetch and fetch+merge pull is probably a design flaw. IMHO it probably should have been something like: Current Shoulda Been --------------- ---------------- git-push git-push git-fetch git-pull git-pull . foo git-merge foo git-pull git-pull --merge git-merge git-merge-driver in other words pull does the download and doesn't automatically start a merge unless --merge was also given and git-merge is a cleaner wrapper around the Grand Unified Merge Driver that makes it easier to start a merge. [*1*] I bet a lot of scripts are currently based on the core Git Poreclain level functions. I try to avoid them myself in scripts and go right to the plumbing but not everyone does that. -- Shawn. - 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