There is a behavior of git-push that is the most annoying thing while working with a central-repository: `git push` without any arguments insists on pushing every local refspec that match one in origin. While it's perfectly correct when you push to a public repository (you do that seldom, and usually only after having prepared it with care), it's not true for the central-repository layout. At work, I often have this situation: [I'm in the devel branch, would be next for git e.g.] ... hack ... hack ... *OMG* what a nasty bug... $ git stash $ git checkout .. fix nasty bug .. $ git commit $ git push # so that co-workers have the fix asap $ git checkout $ git stash apply ... OOOOH NOES it pushed my WIP in my devel branch as well ... There has been (and still is atm) a quite heated discussion on IRC about that. Some arguments were that pull/push were opposite words in English, but weren't doing an opposite thing in git, which led to some fight. But that's not close to the point IMHO. The real question is "what does users intend when they `git push`". In a git/kernel/... like model, you don't think the same than in a svn/cvs-like model. I mean, Junio or Linus likely don't push a lot to their public repository. It happens probably a couple of time per day. While I'm at work, it happens up way more frequentely, and I then want to lazily type `git push` and not `git push origin `. it's too long. I'm not sure what we can do about it, but I'm pretty sure it bites a lot of people out there. For now I use this alias in my .gitconfig: p=!git-push origin `git-symbolic-ref HEAD` but still, it feels really wrong to me. Not to mention that git-push(1) says that it has a --all option that in fact is the current default behavior, hence sounds pretty useless. -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org