* [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given
@ 2026-06-12 11:10 Harald Nordgren via GitGitGadget
2026-06-12 11:10 ` [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip Harald Nordgren via GitGitGadget
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Harald Nordgren via GitGitGadget @ 2026-06-12 11:10 UTC (permalink / raw)
To: git; +Cc: Harald Nordgren
When the repository or upstream argument is a slip like "origin/main" or
"origin main", suggest the intended "git push origin main" or "git branch
--set-upstream-to=origin/main" form instead of failing with an unrelated
error.
Harald Nordgren (2):
branch: suggest <remote>/<branch> on upstream slip
push: suggest <remote> <branch> for a slash slip
Documentation/config/advice.adoc | 5 +++++
advice.c | 1 +
advice.h | 1 +
builtin/branch.c | 17 ++++++++++++++
builtin/push.c | 26 +++++++++++++++++++++-
t/t3200-branch.sh | 38 ++++++++++++++++++++++++++++++++
t/t5529-push-errors.sh | 31 ++++++++++++++++++++++++++
7 files changed, 118 insertions(+), 1 deletion(-)
base-commit: 3e65291872de10c3f0bf05ea8c24187e7a71ebf0
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2331%2FHaraldNordgren%2Fsuggest-remote-branch-slips-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2331/HaraldNordgren/suggest-remote-branch-slips-v1
Pull-Request: https://github.com/git/git/pull/2331
--
gitgitgadget
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip 2026-06-12 11:10 [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren via GitGitGadget @ 2026-06-12 11:10 ` Harald Nordgren via GitGitGadget 2026-06-22 19:56 ` Junio C Hamano 2026-06-12 11:10 ` [PATCH 2/2] push: suggest <remote> <branch> for a slash slip Harald Nordgren via GitGitGadget ` (2 subsequent siblings) 3 siblings, 1 reply; 9+ messages in thread From: Harald Nordgren via GitGitGadget @ 2026-06-12 11:10 UTC (permalink / raw) To: git; +Cc: Harald Nordgren, Harald Nordgren From: Harald Nordgren <haraldnordgren@gmail.com> "git branch --set-upstream-to origin main" reads the trailing word as the local branch to operate on and dies with "branch 'main' does not exist", pointing at the wrong problem. When that branch is missing and "<remote>/<branch>" names a real remote-tracking ref, suggest the intended "git branch --set-upstream-to=<remote>/<branch>" form. Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com> --- builtin/branch.c | 17 +++++++++++++++++ t/t3200-branch.sh | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/builtin/branch.c b/builtin/branch.c index 1572a4f9ef..7ad3efb908 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -957,6 +957,23 @@ int cmd_branch(int argc, if (!refs_ref_exists(get_main_ref_store(the_repository), branch->refname)) { if (!argc || branch_checked_out(branch->refname)) die(_("no commit on branch '%s' yet"), branch->name); + if (argc == 1 && !strchr(new_upstream, '/') && + remote_is_configured(remote_get(new_upstream), 0)) { + struct strbuf remote_ref = STRBUF_INIT; + + strbuf_addf(&remote_ref, "refs/remotes/%s/%s", + new_upstream, argv[0]); + if (refs_ref_exists(get_main_ref_store(the_repository), + remote_ref.buf)) { + int code = die_message(_("--set-upstream-to takes a single <remote>/<branch> argument")); + advise_if_enabled(ADVICE_SET_UPSTREAM_FAILURE, + _("Did you mean to use: git branch --set-upstream-to=%s/%s?"), + new_upstream, argv[0]); + strbuf_release(&remote_ref); + exit(code); + } + strbuf_release(&remote_ref); + } die(_("branch '%s' does not exist"), branch->name); } diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index e7829c2c4b..e2682a83a0 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -1022,6 +1022,44 @@ test_expect_success '--set-upstream-to fails on a missing dst branch' ' test_cmp expect err ' +test_expect_success '--set-upstream-to suggests <remote>/<branch> on slip' ' + test_when_finished "git remote remove slip-remote" && + git remote add slip-remote . && + git update-ref refs/remotes/slip-remote/slip-feature HEAD && + test_must_fail git branch --set-upstream-to slip-remote slip-feature 2>err && + test_grep "takes a single <remote>/<branch> argument" err && + test_grep "hint: Did you mean to use: git branch --set-upstream-to=slip-remote/slip-feature?" err && + test_must_fail git -c advice.setUpstreamFailure=false \ + branch --set-upstream-to slip-remote slip-feature 2>err && + test_grep ! "Did you mean" err +' + +test_expect_success '--set-upstream-to does not suggest when no matching remote ref' ' + test_when_finished "git remote remove slip-remote" && + git remote add slip-remote . && + test_must_fail git branch --set-upstream-to slip-remote no-such-branch 2>err && + test_grep "branch ${SQ}no-such-branch${SQ} does not exist" err && + test_grep ! "Did you mean" err +' + +test_expect_success '--set-upstream-to to a local branch is not mistaken for a slip' ' + git branch slip-local-upstream && + git branch slip-local-target && + git branch --set-upstream-to=slip-local-upstream slip-local-target 2>err && + test_grep ! "Did you mean" err && + echo refs/heads/slip-local-upstream >expect && + git config branch.slip-local-target.merge >actual && + test_cmp expect actual +' + +test_expect_success '--set-upstream-to slip suggestion keeps a slashed branch name' ' + test_when_finished "git remote remove slip-remote" && + git remote add slip-remote . && + git update-ref refs/remotes/slip-remote/slip/feature HEAD && + test_must_fail git branch --set-upstream-to slip-remote slip/feature 2>err && + test_grep "hint: Did you mean to use: git branch --set-upstream-to=slip-remote/slip/feature?" err +' + test_expect_success '--set-upstream-to fails on a missing src branch' ' test_must_fail git branch --set-upstream-to does-not-exist main 2>err && test_grep "the requested upstream branch '"'"'does-not-exist'"'"' does not exist" err -- gitgitgadget ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip 2026-06-12 11:10 ` [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip Harald Nordgren via GitGitGadget @ 2026-06-22 19:56 ` Junio C Hamano 2026-06-22 21:35 ` Junio C Hamano 0 siblings, 1 reply; 9+ messages in thread From: Junio C Hamano @ 2026-06-22 19:56 UTC (permalink / raw) To: Harald Nordgren via GitGitGadget; +Cc: git, Harald Nordgren "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Harald Nordgren <haraldnordgren@gmail.com> > > "git branch --set-upstream-to origin main" reads the trailing word as > the local branch to operate on and dies with "branch 'main' does not > exist", pointing at the wrong problem. When 'main' does not exist locally, $ git branch --set-upstream-to "$anything" main would fail before even looking at the "$anything" (which is supposed to specify the new_upstream for the named local branch 'main'). The operation is to set the upstream for 'main', and if 'main' does not exist, doesn't the user deserve the error that says 'main' does not exist, no matter what "$anything" is, whether it is a well-formed or ill-formed remote tracking branch name? So it is unclear, at least to me, why "branch 'main' does not exist" is an inappropriate message, mostly because these three lines does not clearly tell me what the user _expected_ the command line to do. When 'main' does exist, but named upstream "$anything" does not, we get $ git branch sample master ;# make sure the thing exists $ git branch --set-upstream-to origin sample fatal: the requested upstream branch 'origin' does not exist hint: hint: If you are planning on basing your work on an upstream hint: branch that already exists at the remote, you may need to hint: run "git fetch" to retrieve it. hint: hint: If you are planning to push out a new local branch that hint: will track its remote counterpart, you may want to use hint: "git push -u" to set the upstream config as you push. hint: Disable this message with "git config set advice.setUpstreamFailure false" which does sound clear enough to me, even though it does not exactly say "Even though upstream branch 'origin' does not exist, 'origin' is a nickname for a remote, perhaps you meant to say origin/something?" I do not doubt you are trying to address a real issue, but the above three-line description does not tell me what that problem is. Now I do not regularly use --set-upstream-to, so I may be missing an obvious common mistake modes, but a couple of my attempts to make bad command invocations seem to give me reasonable responses: $ git branch --set-upstream-to ko/master sample branch 'sample' set up to track 'ko/master'. OK, both are well formed so no problem. $ git branch --set-upstream-to ko/mastre sample fatal: the requested upstream branch 'ko/mastre' does not exist hint: hint: If you are planning on basing your work on an upstream hint: branch that already exists at the remote, you may need to hint: run "git fetch" to retrieve it. hint: hint: If you are planning to push out a new local branch that hint: will track its remote counterpart, you may want to use hint: "git push -u" to set the upstream config as you push. hint: Disable this message with "git config set advice.setUpstreamFailure false" Misspelt upstream branch name diagnosed correctly, just like the case where I gave 'origin', which does not exist, either. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip 2026-06-22 19:56 ` Junio C Hamano @ 2026-06-22 21:35 ` Junio C Hamano 0 siblings, 0 replies; 9+ messages in thread From: Junio C Hamano @ 2026-06-22 21:35 UTC (permalink / raw) To: Harald Nordgren via GitGitGadget; +Cc: git, Harald Nordgren Junio C Hamano <gitster@pobox.com> writes: > "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com> writes: > >> From: Harald Nordgren <haraldnordgren@gmail.com> >> >> "git branch --set-upstream-to origin main" reads the trailing word as >> the local branch to operate on and dies with "branch 'main' does not >> exist", pointing at the wrong problem. > > When 'main' does not exist locally, > > $ git branch --set-upstream-to "$anything" main > > would fail before even looking at the "$anything" (which is supposed > to specify the new_upstream for the named local branch 'main'). The > operation is to set the upstream for 'main', and if 'main' does not > exist, doesn't the user deserve the error that says 'main' does not > exist, no matter what "$anything" is, whether it is a well-formed or > ill-formed remote tracking branch name? > > So it is unclear, at least to me, why "branch 'main' does not exist" > is an inappropriate message, mostly because these three lines does > not clearly tell me what the user _expected_ the command line to do. After pondering on this a bit, I _think_ (but I am guessing, and your job as an author of proposed commit log message is to make sure your readers do not have to guess) what the user expected was to set the upstream for the currrent branch. When trying to set the upstream for the current branch to "main" branch of the remote "origin", i.e., $ git branch --set-upstream-to origin/main it is easy for some users to mistakenly say $ git branch --set-upstream-to origin main But it is a request to set the upstream for the local branch "main" to "origin", which is not expected to work as the upstream most likely would look like <remote>/<branch> (e.g., "origin/main"). The user would get either one of these errors: fatal: branch 'main' does not exist fatal: the requested upstream branch 'origin' does not exist Give a hint that we _suspect_ the user may have meant to set the upstream of the current branch to 'origin/main' (but do so only when 'origin/main' does exist), and tell them the right way to spell that request. or something perhaps? ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] push: suggest <remote> <branch> for a slash slip 2026-06-12 11:10 [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren via GitGitGadget 2026-06-12 11:10 ` [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip Harald Nordgren via GitGitGadget @ 2026-06-12 11:10 ` Harald Nordgren via GitGitGadget 2026-06-22 20:40 ` Junio C Hamano 2026-06-22 8:41 ` [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren 2026-06-22 21:16 ` Junio C Hamano 3 siblings, 1 reply; 9+ messages in thread From: Harald Nordgren via GitGitGadget @ 2026-06-12 11:10 UTC (permalink / raw) To: git; +Cc: Harald Nordgren, Harald Nordgren From: Harald Nordgren <haraldnordgren@gmail.com> "git push origin/main" is treated as a repository and dies with "'origin/main' does not appear to be a git repository", with no hint that a space was meant instead of a slash. When the argument is not an existing path or configured remote but its part before the first slash names one, suggest the intended "git push <remote> <branch>" form. The suggestion is shown as advice so it can be silenced with advice.pushRepoLooksLikeRef. Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com> --- Documentation/config/advice.adoc | 5 +++++ advice.c | 1 + advice.h | 1 + builtin/push.c | 26 +++++++++++++++++++++++++- t/t5529-push-errors.sh | 31 +++++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 1 deletion(-) diff --git a/Documentation/config/advice.adoc b/Documentation/config/advice.adoc index 257db58918..fa77a5110e 100644 --- a/Documentation/config/advice.adoc +++ b/Documentation/config/advice.adoc @@ -90,6 +90,11 @@ all advice messages. Shown when linkgit:git-push[1] rejects a forced update of a branch when its remote-tracking ref has updates that we do not have locally. + pushRepoLooksLikeRef:: + Shown when the repository given to linkgit:git-push[1] is not + a configured remote but looks like a `<remote>/<branch>` ref, + suggesting that the remote and branch be given as separate + arguments. pushUnqualifiedRefname:: Shown when linkgit:git-push[1] gives up trying to guess based on the source and destination refs what diff --git a/advice.c b/advice.c index 0018501b7b..63bf8b0c5f 100644 --- a/advice.c +++ b/advice.c @@ -69,6 +69,7 @@ static struct { [ADVICE_PUSH_NON_FF_CURRENT] = { "pushNonFFCurrent" }, [ADVICE_PUSH_NON_FF_MATCHING] = { "pushNonFFMatching" }, [ADVICE_PUSH_REF_NEEDS_UPDATE] = { "pushRefNeedsUpdate" }, + [ADVICE_PUSH_REPO_LOOKS_LIKE_REF] = { "pushRepoLooksLikeRef" }, [ADVICE_PUSH_UNQUALIFIED_REF_NAME] = { "pushUnqualifiedRefName" }, [ADVICE_PUSH_UPDATE_REJECTED] = { "pushUpdateRejected" }, [ADVICE_PUSH_UPDATE_REJECTED_ALIAS] = { "pushNonFastForward" }, /* backwards compatibility */ diff --git a/advice.h b/advice.h index 8def280688..66f6cd6a77 100644 --- a/advice.h +++ b/advice.h @@ -36,6 +36,7 @@ enum advice_type { ADVICE_PUSH_NON_FF_CURRENT, ADVICE_PUSH_NON_FF_MATCHING, ADVICE_PUSH_REF_NEEDS_UPDATE, + ADVICE_PUSH_REPO_LOOKS_LIKE_REF, ADVICE_PUSH_UNQUALIFIED_REF_NAME, ADVICE_PUSH_UPDATE_REJECTED, ADVICE_PUSH_UPDATE_REJECTED_ALIAS, diff --git a/builtin/push.c b/builtin/push.c index 6021b71d66..c21febadbe 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -8,6 +8,7 @@ #include "advice.h" #include "branch.h" #include "config.h" +#include "dir.h" #include "environment.h" #include "gettext.h" #include "hex.h" @@ -744,6 +745,29 @@ int cmd_push(int argc, if (repo) { if (!add_remote_or_group(repo, &remote_group)) { + const char *slash = strchr(repo, '/'); + struct remote *r; + + /* + * A "<remote>/<branch>" argument that does not name + * a path is likely a slip for the separate + * "<remote> <branch>" form, so suggest that instead. + */ + if (slash && slash[1] && !file_exists(repo)) { + struct strbuf name = STRBUF_INIT; + + strbuf_add(&name, repo, slash - repo); + if (remote_is_configured(remote_get(name.buf), 0)) { + int code = die_message(_("'%s' is not a valid push target"), repo); + advise_if_enabled(ADVICE_PUSH_REPO_LOOKS_LIKE_REF, + _("Did you mean to use: git push %s %s?"), + name.buf, slash + 1); + strbuf_release(&name); + exit(code); + } + strbuf_release(&name); + } + /* * Not a configured remote name or group name. * Try treating it as a direct URL or path, e.g. @@ -753,7 +777,7 @@ int cmd_push(int argc, * from the URL so the loop below can handle it * identically to a named remote. */ - struct remote *r = pushremote_get(repo); + r = pushremote_get(repo); if (!r) die(_("bad repository '%s'"), repo); string_list_append(&remote_group, r->name); diff --git a/t/t5529-push-errors.sh b/t/t5529-push-errors.sh index 80b06a0cd2..cfb294305d 100755 --- a/t/t5529-push-errors.sh +++ b/t/t5529-push-errors.sh @@ -54,6 +54,37 @@ test_expect_success 'detect empty remote with targeted refspec' ' grep "fatal: bad repository ${SQ}${SQ}" stderr ' +test_expect_success 'suggest <remote> <branch> for a <remote>/<branch> slip' ' + test_must_fail git push origin/main 2>stderr && + grep "${SQ}origin/main${SQ} is not a valid push target" stderr && + grep "hint: Did you mean to use: git push origin main?" stderr && + test_must_fail git -c advice.pushRepoLooksLikeRef=false push origin/main 2>stderr && + ! grep "Did you mean" stderr +' + +test_expect_success 'suggest <remote> <branch> when the branch has slashes' ' + test_must_fail git push origin/feature/x 2>stderr && + grep "hint: Did you mean to use: git push origin feature/x?" stderr +' + +test_expect_success 'no suggestion when prefix is not a configured remote' ' + test_must_fail git push not-a-remote/main 2>stderr && + ! grep "Did you mean" stderr +' + +test_expect_success 'no suggestion for a trailing slash with no branch' ' + test_must_fail git push origin/ 2>stderr && + ! grep "Did you mean" stderr +' + +test_expect_success 'no suggestion when the argument is an existing path' ' + test_when_finished "rm -rf origin" && + git init --bare origin/main && + git push origin/main HEAD:refs/heads/pushed 2>stderr && + ! grep "Did you mean" stderr && + git -C origin/main rev-parse --verify refs/heads/pushed +' + test_expect_success 'detect ambiguous refs early' ' git branch foo && git tag foo && -- gitgitgadget ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] push: suggest <remote> <branch> for a slash slip 2026-06-12 11:10 ` [PATCH 2/2] push: suggest <remote> <branch> for a slash slip Harald Nordgren via GitGitGadget @ 2026-06-22 20:40 ` Junio C Hamano 0 siblings, 0 replies; 9+ messages in thread From: Junio C Hamano @ 2026-06-22 20:40 UTC (permalink / raw) To: Harald Nordgren via GitGitGadget; +Cc: git, Harald Nordgren "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Harald Nordgren <haraldnordgren@gmail.com> > > "git push origin/main" is treated as a repository and dies with > "'origin/main' does not appear to be a git repository", with no hint > that a space was meant instead of a slash. This is easier for me to guess than what the user may have wanted to do in the decription of [1/2]. But it still will be easier on readers to say When pusing out up update the "main" branch to the remote "origin", i.e., $ git push origin main it is easy for some users to mistakenly say $ git push origin/main instead. This however instructs to push to remote "origin/main" with configured refspecs, which means a completely different thing. Lucikly, often origin/main does not exist as a remote and the command fails without doing any harm, but still may leave the user puzzled what happened. Give hint to ... or something like that. > When the argument is not an existing path or configured remote but its > part before the first slash names one, suggest the intended > "git push <remote> <branch>" form. The suggestion is shown as advice so > it can be silenced with advice.pushRepoLooksLikeRef. Sounds sensible. > if (repo) { > if (!add_remote_or_group(repo, &remote_group)) { > + const char *slash = strchr(repo, '/'); > + struct remote *r; > + > + /* > + * A "<remote>/<branch>" argument that does not name > + * a path is likely a slip for the separate > + * "<remote> <branch>" form, so suggest that instead. > + */ > + if (slash && slash[1] && !file_exists(repo)) { > + struct strbuf name = STRBUF_INIT; > + > + strbuf_add(&name, repo, slash - repo); > + if (remote_is_configured(remote_get(name.buf), 0)) { > + int code = die_message(_("'%s' is not a valid push target"), repo); > + advise_if_enabled(ADVICE_PUSH_REPO_LOOKS_LIKE_REF, > + _("Did you mean to use: git push %s %s?"), > + name.buf, slash + 1); > + strbuf_release(&name); > + exit(code); > + } > + strbuf_release(&name); > + } Hmph, if this class of hint is not enabled, do we still have to spend cycles on these "is this a remote? is the first token a remote?" computation? I would have expected that a change here would be a two-liner: if (!add_remote_or_group(...)) { + if (advise_enabled(ADVICE_PUSH_REPO_LOOKS_LIKE_REF)) + die_if_plausible_typo(...); ... do the "try treating it as a direct URL or path" thing ... } with the bulk of the "if it has slash, it is not a file, then advise and die" logic inside the new helper function. What I find especially troubling is that even when advise for this class of hint is not enabled, the new code will hit the new exit(), without falling back to the "try treating it as a direct URL or path" thing. Or am I missing something? Thanks. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given 2026-06-12 11:10 [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren via GitGitGadget 2026-06-12 11:10 ` [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip Harald Nordgren via GitGitGadget 2026-06-12 11:10 ` [PATCH 2/2] push: suggest <remote> <branch> for a slash slip Harald Nordgren via GitGitGadget @ 2026-06-22 8:41 ` Harald Nordgren 2026-06-22 8:59 ` Weijie Yuan 2026-06-22 21:16 ` Junio C Hamano 3 siblings, 1 reply; 9+ messages in thread From: Harald Nordgren @ 2026-06-22 8:41 UTC (permalink / raw) To: Harald Nordgren via GitGitGadget; +Cc: git Would be nice to get some feedback here. This is maybe not the most pressing issue, but I remember being quite dumbfounded when I was a new Git user; not understanding why some commands required one format "origin/main" and other required "origin main". It would be better if we could actually solve it, but I suspect it's hard without breaking backward compatibility, so maybe this is a good middle road? Harald ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given 2026-06-22 8:41 ` [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren @ 2026-06-22 8:59 ` Weijie Yuan 0 siblings, 0 replies; 9+ messages in thread From: Weijie Yuan @ 2026-06-22 8:59 UTC (permalink / raw) To: Harald Nordgren; +Cc: Harald Nordgren via GitGitGadget, git On Mon, Jun 22, 2026 at 10:41:18AM +0200, Harald Nordgren wrote: > This is maybe not the most pressing issue, but I remember being quite > dumbfounded when I was a new Git user; not understanding why some > commands required one format "origin/main" and other required "origin > main". Can't agree more. It's quite confusing for new users like me. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given 2026-06-12 11:10 [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren via GitGitGadget ` (2 preceding siblings ...) 2026-06-22 8:41 ` [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren @ 2026-06-22 21:16 ` Junio C Hamano 3 siblings, 0 replies; 9+ messages in thread From: Junio C Hamano @ 2026-06-22 21:16 UTC (permalink / raw) To: Harald Nordgren via GitGitGadget; +Cc: git, Harald Nordgren "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com> writes: > When the repository or upstream argument is a slip like "origin/main" or > "origin main", suggest the intended "git push origin main" or "git branch > --set-upstream-to=origin/main" form instead of failing with an unrelated > error. Sorry for asking a question that may be stupid, but what does the word "slip" mean in the context of the above sentence? I am having a hard time coming up with a topic name while queuing these two patches (an obvious candidate is hn/branch-push-slip-advise but I do not know how well the word sits there). Thanks. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-06-22 21:35 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-12 11:10 [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren via GitGitGadget 2026-06-12 11:10 ` [PATCH 1/2] branch: suggest <remote>/<branch> on upstream slip Harald Nordgren via GitGitGadget 2026-06-22 19:56 ` Junio C Hamano 2026-06-22 21:35 ` Junio C Hamano 2026-06-12 11:10 ` [PATCH 2/2] push: suggest <remote> <branch> for a slash slip Harald Nordgren via GitGitGadget 2026-06-22 20:40 ` Junio C Hamano 2026-06-22 8:41 ` [PATCH 0/2] branch/push: suggest intended form when remote/branch slip given Harald Nordgren 2026-06-22 8:59 ` Weijie Yuan 2026-06-22 21:16 ` Junio C Hamano
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox