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

Re: [PATCH v2 1/4] breaking-changes: switch default branch to main

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 5, 2025, 15:04 UTC
Message-ID
<xmqqwm6d3pq2.fsf@gitster.g>
In-Reply-To
<f43c3e61-01c8-47d8-bf0d-7cfa13cacca5@gmail.com>
Phillip Wood <phillip.wood123@gmail.com> writes:
Show 22 quoted lines
>> Would there be folks who type "git init" to get a 'main' branch,
>> while trying to follow a recipe written in pre-3.0 days that assumes
>> the initial branch is called differently, and get confused after
>> seeing many commands written in the recipe for them to follow , like
>> "git checkout -b next master" fail?  Do they need a different advice
>> message to help them, i.e.e.g,
>>      $ git init
>>      Initialized empty Git repository in /a/b/c/.git/
>>      hint: Since Git 3.0, an initial branch is 'main' these days.
>>      hint: If you need its name to be different (e.g. 'frotz'),
>>      hint: you can immediately rename it with "git branch -m frotz".
>>      hint: Disable this message with "got config set advice.foo false"
>> or something?  I dunno.  In any case, that will have to be a new and
>> different advice message, and defaultBranchName should not be reused
>> for that purpose, so the change in the the above hunk is fine.  I am
>> wondering if we need a new entry protected by the same #ifdef on the
>> #else side.
>
> Personally I find the current advice pretty annoying and would be glad
> to see it go away. Are there really that many people who want to
> customize the initial branch name that it is worth adding some new
> advice post Git 3.0?

Given that the tutorial materials that were written when we gave the init.defaultBranchName mechanism _all_ assumed that by default the initial branch that gets created is called 'master', the current advice messages were primarily not about usability but personal preference. The message targets those who dislike 'master' so much that they are willing to replace all 'master' they read in the tutorial material as 'main' if they are following an existing tutorial material. And the instruction is primarily about how to switch to a new default permanently with the configuration.

But the one that I pointed out as missing in your proposal is quite different. It is meant for those who need help about usability, not personal preference. Even if they strongly prefer 'main' over 'master', in order to follow along an existing tutorial material, they will find it less error prone if the initial branch used in their practice repository were 'master'. That is why the instruction is only about recovering only _this_ repository they just have created (Notice that I did not tell them how to use the configuration mechanism to permanently live in the past in the above "... or something?" example? It is very deliberate---"the world has moved, so should they, except for this single instance" is the message they need to hear).

Show 5 quoted lines
> Although I find it annoying, I do think the
> current advice serves a useful purpose as it informs people the
> default that they are used to is changing and that they can override
> it. Given how long we've been warning people I'm not sure we need to
> say anything once the default has changed.

You need to remember that there always are new users who use Git seriously for the first time _after_ switchover happens.

Because it is more about usability than preference, I see at least the same degree of need, if not more, to help these people who still need to use the old name to follow along the tutorial material than those who have been helped by the existing "Sorry you got 'master', but you may prefer a different name, and you can do so by doing these things" message,

Previous: Phillip WoodNext: Phillip Wood
Message 29 of 56 in “breaking changes: switch default initial branch name to "main"”
  1. 0/6 breaking changes: switch default initial branch name to "main"Phillip Wood, Aug 27, 2025
  2. 1/6 t0018: switch default branch name to mainPhillip Wood, Aug 27, 2025
  3. Junio C HamanoAug 27, 2025
  4. Phillip WoodAug 28, 2025
  5. Junio C HamanoAug 28, 2025
  6. brian m. carlsonAug 28, 2025
  7. 3/6 t9902: switch default branch name to mainPhillip Wood, Aug 27, 2025
  8. 2/6 t4013: switch default branch name to mainPhillip Wood, Aug 27, 2025
  9. 4/6 t0613: stop setting default initial branchPhillip Wood, Aug 27, 2025
  10. Junio C HamanoAug 27, 2025
  11. 5/6 t1403: remove dependency on GIT_TEST_DEFAULT_INITIAL_BRANCH_NAMEPhillip Wood, Aug 27, 2025
  12. 6/6 breaking-changes: switch default branch to mainPhillip Wood, Aug 27, 2025
  13. Junio C HamanoAug 27, 2025
  14. Patrick SteinhardtSep 2, 2025
  15. Phillip WoodSep 2, 2025
  16. Patrick SteinhardtSep 3, 2025
  17. Phillip WoodSep 3, 2025
  18. Patrick SteinhardtSep 3, 2025
  19. Junio C HamanoSep 3, 2025
  20. Patrick SteinhardtSep 4, 2025
  21. Phillip WoodSep 4, 2025
  22. Patrick SteinhardtSep 5, 2025
  23. Phillip WoodSep 4, 2025
  24. Johannes SchindelinAug 28, 2025
  25. 0/4 breaking changes: switch default initial branch name to "main"Phillip Wood, Sep 4, 2025
  26. 1/4 breaking-changes: switch default branch to mainPhillip Wood, Sep 4, 2025
  27. Junio C HamanoSep 4, 2025
  28. Phillip WoodSep 5, 2025
  29. Junio C HamanoSep 5, 2025
  30. 3/4 t9902: switch default branch name to mainPhillip Wood, Sep 4, 2025
  31. Junio C HamanoSep 4, 2025
  32. Phillip WoodSep 5, 2025
  33. Patrick SteinhardtSep 5, 2025
  34. Phillip WoodSep 9, 2025
  35. 2/4 t4013: switch default branch name to mainPhillip Wood, Sep 4, 2025
  36. 4/4 t0613: stop setting default initial branchPhillip Wood, Sep 4, 2025
  37. Junio C HamanoSep 4, 2025
  38. Phillip WoodSep 5, 2025
  39. Junio C HamanoSep 4, 2025
  40. Phillip WoodSep 4, 2025
  41. 0/4 breaking changes: switch default initial branch name to "main"Phillip Wood, Sep 10, 2025
  42. 1/4 breaking-changes: switch default branch to mainPhillip Wood, Sep 10, 2025
  43. 2/4 t4013: switch default branch name to mainPhillip Wood, Sep 10, 2025
  44. 3/4 t9902: switch default branch name to mainPhillip Wood, Sep 10, 2025
  45. 4/4 t0613: stop setting default initial branchPhillip Wood, Sep 10, 2025
  46. Junio C HamanoSep 10, 2025
  47. Junio C HamanoSep 17, 2025
  48. Kristoffer HaugsbakkSep 17, 2025
  49. Junio C HamanoSep 17, 2025
  50. Phillip WoodSep 17, 2025
  51. Junio C HamanoSep 17, 2025
  52. Junio C HamanoSep 17, 2025
  53. Phillip WoodSep 18, 2025
  54. 5/4 initial branch: give hints after switching the default nameJunio C Hamano, Sep 17, 2025
  55. Phillip WoodSep 18, 2025
  56. Junio C HamanoSep 18, 2025

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.