Sometimes it is handy to push only the current branch to the default remote repository. For example, if you created a branch using the '--track' option git knows that the current branch is linked to a specific remote. But up to now you needed to say "git push <defaultremote> <thisbranch>", which was quite annoying. You could have said "git push" but then _all_ branches would have been pushed to the default remote. This commit introduces "git push HEAD", which resolves HEAD to the current branch and pushes only the current branch to its default remote. Setups that have a remote named HEAD will break. But such a setup if unlikely to exist; and is not very sensible anyway. Signed-off-by: Steffen Prohaska <prohaska@xxxxxx> --- Documentation/git-push.txt | 6 +++++- builtin-push.c | 2 ++ t/t5516-fetch-push.sh | 12 ++++++++++++ 3 files changed, 19 insertions(+), 1 deletions(-) diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 67b354b..236898f 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -10,7 +10,7 @@ SYNOPSIS -------- [verse] 'git-push' [--all] [--dry-run] [--create] [--tags] [--receive-pack=<git-receive-pack>] - [--repo=all] [-f | --force] [-v] [<repository> <refspec>...] + [--repo=all] [-f | --force] [-v] [HEAD | <repository> <refspec>...] DESCRIPTION ----------- @@ -25,6 +25,10 @@ documentation for gitlink:git-receive-pack[1]. OPTIONS ------- +HEAD:: + Tells push to push the current branch to the default + remote repository. + <repository>:: The "remote" repository that is destination of a push operation. See the section <<URLS,GIT URLS>> below. diff --git a/builtin-push.c b/builtin-push.c index 2e3c8c6..7c08e19 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -102,6 +102,8 @@ int cmd_push(int argc, const char **argv, const char *prefix) const char *arg = argv[i]; if (arg[0] != '-') { + if (!strcmp("HEAD", arg)) + break; repo = arg; i++; break; diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh index 8becaf8..2650e36 100755 --- a/t/t5516-fetch-push.sh +++ b/t/t5516-fetch-push.sh @@ -291,6 +291,18 @@ test_expect_success 'push with HEAD' ' ' +test_expect_success 'push HEAD' ' + + mk_test heads/track && + git remote add test testrepo && + git fetch test && + git checkout -b track test/track && + git reset --hard master && + git push HEAD && + check_push_result $the_commit heads/track + +' + test_expect_success 'push with HEAD (--create)' ' mk_test && -- 1.5.3.4.439.ge8b49 - 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