There's a safety check to make sure branch->refname is not different from branch->merge[0]->src, otherwise we die(). Therefore we always push to branch->refname. Suggestions-by: Elijah Newren <newren@xxxxxxxxx> Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx> --- builtin/push.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/builtin/push.c b/builtin/push.c index 9c807ed707..73fe083682 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -225,14 +225,10 @@ static void setup_push_current(struct remote *remote, struct branch *branch) static void setup_push_simple(struct remote *remote, struct branch *branch, int triangular) { - const char *dst; - if (!branch) die(_(message_detached_head_die), remote->name); - if (triangular) { - dst = branch->refname; - } else { + if (!triangular) { if (!branch->merge_nr || !branch->merge || !branch->remote_name) die(_("The current branch %s has no upstream branch.\n" "To push the current branch and set the remote as upstream, use\n" @@ -248,10 +244,8 @@ static void setup_push_simple(struct remote *remote, struct branch *branch, int /* Additional safety */ if (strcmp(branch->refname, branch->merge[0]->src)) die_push_simple(branch, remote); - - dst = branch->merge[0]->src; } - refspec_appendf(&rs, "%s:%s", branch->refname, dst); + refspec_appendf(&rs, "%s:%s", branch->refname, branch->refname); } static int is_workflow_triangular(struct remote *remote) -- 2.32.0.rc0