git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3] worktree add: improve message for ambiguous remote branch name

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 11, 2026, 00:03 UTC
Message-ID
<xmqqecg55xqq.fsf@gitster.g>
In-Reply-To
<pull.2197.v3.git.1786395305884.gitgitgadget@gmail.com>
"Yoichi NAKAYAMA via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 6 quoted lines
> From: Yoichi NAKAYAMA <yoichi.nakayama@gmail.com>
>
> When the user runs 'git worktree add x y' command that does not
> exactly say which remote they want to work with, and there is no local
> branch named y, we try to guess which remote by passing y then create
> a new branch named y which tracks the remote branch.

I used x and y as placeholders. The readers would be helped if you used a more plausible sounding names, e.g., naming directory as something like foo-dir (the point being 'dir' somewhere in its name) and naming a branch as something like bar-topic. If this were 'git worktree add', it is probably more than likely that the destination directory would begin with ../ to have the new worktree next to the primary repository we are running in, no?

Show 5 quoted lines
> If there are multiple remotes that have branch named y, we silently
> gave up, leaving the variable branch intact.  This later causes
> creating local branch and worktree not happen, and we end up with
> passing an non-existing branch to lookup_commit_reference_by_name(),
> triggering "invalid reference" error and die.

"This later causes" part still seems a bit too sketchy to help a totally new reader, even though I've stared at this code long enough so it would be sufficient for me personally. But these logs are not about helping me, but helping other developers, so...

Show 12 quoted lines
> +#define WORKTREE_ADD_AMBIGUOUS_REMOTE_BRANCH_NAME_HINT_TEXT \
> +	_("Matched multiple remote tracking branches, you can list them by:\n" \
> +	"\n" \
> +	"    git branch -r --list \"*/%s\"\n" \
> +	"\n" \
> +	"If you meant to create a worktree from a remote tracking branch on,\n" \
> +	"e.g. 'origin', you can do so by:\n" \
> +	"\n" \
> +	"    git worktree add -b %s %s origin/%s\n" \
> +	"\n" \
> +	"If you'd like to always prefer some remote, e.g. 'origin',\n" \
> +	"consider setting checkout.defaultRemote=origin in your config.")

Instead of throwing the problem back to the user with four extra lines of message telling them how to run 'git branch', I would have expected this patch to teach unique_tracking_name() to optionally return the list of remotes with that branch name, and to use that result in this message. However, if the goal is simply to provide something better than 'invalid reference', we do not even need to go that far. Just stating that branch 'y' appears on multiple remotes and asking them to clarify which one they mean might be a sufficient improvement.

Could the original request be aiming to create a new worktree with the HEAD detached at the commit pointed at by the remote-tracking branch, instead of creating a local branch forked from it? I am just wondering if "-b %s" is too specific to one possible interpretation that may contradict to what the user actually wanted to do.

Thanks.
Previous: Yoichi NAKAYAMA via GitGitGadgetNext: Yoichi Nakayama
Message 18 of 62 in “worktree add: improve message for ambiguous remote branch name”
  1. worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 8, 2026
  2. Junio C HamanoAug 8, 2026
  3. Junio C HamanoAug 8, 2026
  4. Harald NordgrenAug 9, 2026
  5. Junio C HamanoAug 9, 2026
  6. Harald NordgrenAug 10, 2026
  7. Junio C HamanoAug 9, 2026
  8. Yoichi NakayamaAug 10, 2026
  9. Yoichi NakayamaAug 10, 2026
  10. D. Ben KnobleAug 10, 2026
  11. Yoichi NakayamaAug 10, 2026
  12. Junio C HamanoAug 10, 2026
  13. Yoichi NakayamaAug 10, 2026
  14. Ben KnobleAug 11, 2026
  15. Yoichi NakayamaAug 12, 2026
  16. worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 10, 2026
  17. worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 10, 2026
  18. Junio C HamanoAug 11, 2026
  19. Yoichi NakayamaAug 11, 2026
  20. Junio C HamanoAug 12, 2026
  21. Yoichi NakayamaAug 15, 2026
  22. worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 11, 2026
  23. 0/2 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 19, 2026
  24. 1/2 checkout: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 19, 2026
  25. D. Ben KnobleAug 19, 2026
  26. Junio C HamanoAug 20, 2026
  27. Yoichi NakayamaAug 20, 2026
  28. 2/2 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 19, 2026
  29. 0/3 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 20, 2026
  30. 1/3 checkout: extract function to display advice for ambiguous remotesYoichi NAKAYAMA via GitGitGadget, Aug 20, 2026
  31. 2/3 checkout: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 20, 2026
  32. 3/3 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 20, 2026
  33. Junio C HamanoAug 21, 2026
  34. Yoichi NakayamaAug 21, 2026
  35. Junio C HamanoAug 21, 2026
  36. Yoichi NakayamaAug 22, 2026
  37. Junio C HamanoAug 22, 2026
  38. Yoichi NakayamaAug 24, 2026
  39. 0/3 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 22, 2026
  40. 1/3 checkout: extract function to display advice for ambiguous remotesYoichi NAKAYAMA via GitGitGadget, Aug 22, 2026
  41. 2/3 checkout: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 22, 2026
  42. 3/3 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 22, 2026
  43. Junio C HamanoAug 22, 2026
  44. 0/4 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 25, 2026
  45. 1/4 checkout: extract function to display advice for ambiguous remotesYoichi NAKAYAMA via GitGitGadget, Aug 25, 2026
  46. 2/4 checkout: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 25, 2026
  47. 3/4 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 25, 2026
  48. 4/4 worktree add: treat multiple matches with --guess-remote as an errorYoichi NAKAYAMA via GitGitGadget, Aug 25, 2026
  49. Junio C HamanoAug 25, 2026
  50. 0/4 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 26, 2026
  51. 1/4 checkout: extract function to display advice for ambiguous remotesYoichi NAKAYAMA via GitGitGadget, Aug 26, 2026
  52. Junio C HamanoAug 26, 2026
  53. 2/4 checkout: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 26, 2026
  54. Junio C HamanoAug 26, 2026
  55. 3/4 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 26, 2026
  56. 4/4 worktree add: treat multiple matches with --guess-remote as an errorYoichi NAKAYAMA via GitGitGadget, Aug 26, 2026
  57. 0/4 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 27, 2026
  58. 1/4 checkout: extract function to display advice for ambiguous remotesYoichi NAKAYAMA via GitGitGadget, Aug 27, 2026
  59. 2/4 checkout: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 27, 2026
  60. 3/4 worktree add: improve message for ambiguous remote branch nameYoichi NAKAYAMA via GitGitGadget, Aug 27, 2026
  61. 4/4 worktree add: treat multiple matches with --guess-remote as an errorYoichi NAKAYAMA via GitGitGadget, Aug 27, 2026
  62. Junio C HamanoAug 27, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.