To get the meaning of push:remoteref, ref-filter.c calls remote_ref_for_branch. However remote_ref_for_branch only handles the case of a specified refspec. The other cases treated by branch_get_push_1 are the mirror case, PUSH_DEFAULT_{NOTHING,MATCHING,CURRENT,UPSTREAM,UNSPECIFIED,SIMPLE}. In all these cases, either there is no push remote, or the remote_ref is branch->refname. So we can handle all these cases by returning branch->refname, provided that remote is not empty. Signed-off-by: Damien Robert <damien.olivier.robert+git@xxxxxxxxx> --- remote.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/remote.c b/remote.c index 593ce297ed..75e42b1e36 100644 --- a/remote.c +++ b/remote.c @@ -538,6 +538,11 @@ const char *remote_ref_for_branch(struct branch *branch, int for_push, *explicit = 1; return dst; } + else if (remote) { + if (explicit) + *explicit = 1; + return branch->refname; + } } } if (explicit) -- Patched on top of v2.25.1-377-g2d2118b814 (git version 2.25.1)