I think, that the git-push behaviour is a bit unlogical in conjunction with $GIT_DIR/branches. If $GIT_DIR/branches/name1 contains "<repository>#name2": - git-fetch name1 will fetch refs/heads/name2 from <repository> and store it in refs/heads/name1 - git-push name1 will push refs/heads/master to refs/heads/master in <repository> I would expect, that git-push would somehow honour #name2. As far as I remember, cg-push name1 would have pushed HEAD to refs/heads/name2 in <repository>. In remote.c, function read_branches_file the following code would implement a similar behaviour: strbuf_init(&push, 0); strbuf_addstr(&push, "HEAD"); if (frag) { strbuf_addf(&push, ":refs/heads/%s", frag); } else strbuf_addstr(&push, ":refs/heads/master"); add_push_refspec(remote, strbuf_detach(&push, 0)); Options about this? mfg Martin Kögler -- 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