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@xxxxxxxxxx: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@xxxxxxxxx> --- builtin/push.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/builtin/push.c b/builtin/push.c index ef3aa97..a79038c 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 = branch_get(NULL); + switch (push_default) { default: case PUSH_DEFAULT_UNSPECIFIED: @@ -194,6 +196,8 @@ static void setup_default_push_refspecs(struct remote *remote) break; case PUSH_DEFAULT_CURRENT: + if (!branch) + die(_(message_detached_head_die), remote->name); add_refspec("HEAD"); break; -- 1.8.3.12.gbd56588 -- 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