diff options
author | Ramkumar Ramachandra <artagnon@gmail.com> | 2013-05-30 00:51:50 +0530 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-05-29 15:34:04 -0700 |
commit | 7b2ecd81084adeba701c60da81eec6be478910b8 (patch) | |
tree | 7fda9bb6955ec7f7898520934468dbae03b6f2c1 /builtin | |
parent | push: factor out the detached HEAD error message (diff) | |
download | tgif-7b2ecd81084adeba701c60da81eec6be478910b8.tar.xz |
push: fail early with detached HEAD and current
Setting push.default to current adds the refspec "HEAD" for the
transport layer to handle. If "HEAD" doesn't resolve to a branch (and
since no refspec rhs is specified), the push fails after some time with
a cryptic error message:
$ git push
error: unable to push to unqualified destination: HEAD
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@github.com:artagnon/git'
Fail early with a nicer error message:
$ git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use
git push ram HEAD:<name-of-remote-branch>
Just like in the upstream and simple cases.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/push.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/builtin/push.c b/builtin/push.c index ef3aa970ce..ba2bd56ebc 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -175,6 +175,8 @@ static void warn_unspecified_push_default_configuration(void) static void setup_default_push_refspecs(struct remote *remote) { + struct branch *branch; + switch (push_default) { default: case PUSH_DEFAULT_UNSPECIFIED: @@ -194,6 +196,9 @@ static void setup_default_push_refspecs(struct remote *remote) break; case PUSH_DEFAULT_CURRENT: + branch = branch_get(NULL); + if (!branch) + die(_(message_detached_head_die), remote->name); add_refspec("HEAD"); break; |