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

Re: [PATCH v4 4/7] doc: git-checkout: clarify `-b` and `-B`

From
KHKristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
Date
Sep 29, 2025, 18:07 UTC
Message-ID
<df251b0c-c593-41ed-903e-8fb1c323b874@app.fastmail.com>
In-Reply-To
<e636475cba2246ea98e461579a25b41b0ef4e99d.1757531669.git.gitgitgadget@gmail.com>
On Wed, Sep 10, 2025, at 21:14, Julia Evans via GitGitGadget wrote:
Show 44 quoted lines
>[snip]
> diff --git a/Documentation/git-checkout.adoc b/Documentation/git-checkout.adoc
> index 0db32b098e..7ae2ae9483 100644
> --- a/Documentation/git-checkout.adoc
> +++ b/Documentation/git-checkout.adoc
> @@ -47,27 +47,21 @@ $ git checkout -b <branch> --track <remote>/<branch>
>  Running `git checkout` without specifying a branch has no effect except
>  to print out the tracking information for the current branch.
>
> -`git checkout (-b|-B) <new-branch> [<start-point>]`::
> -
> -	Specifying `-b` causes a new branch to be created as if
> -	linkgit:git-branch[1] were called and then checked out.  In
> -	this case you can use the `--track` or `--no-track` options,
> -	which will be passed to `git branch`.  As a convenience,
> -	`--track` without `-b` implies branch creation; see the
> -	description of `--track` below.
> -+
> -If `-B` is given, _<new-branch>_ is created if it doesn't exist; otherwise, it
> -is reset. This is the transactional equivalent of
> -+
> -------------
> -$ git branch -f <branch> [<start-point>]
> -$ git checkout <branch>
> -------------
> +`git checkout -b <new-branch> [<start-point>]`::
> +
> +	Create a new branch named _<new-branch>_, start it at _<start-point>_
> +	(defaults to the current commit), and check out the new branch.
> +	You can use the `--track` or `--no-track` options to set the branch's
> +	upstream tracking information.
>  +
> -that is to say, the branch is not reset/created unless "git checkout" is
> -successful (e.g., when the branch is in use in another worktree, not
> -just the current branch stays the same, but the branch is not reset to
> -the start-point, either).
> +This will fail if there's an error checking out _<new-branch>_, for
> +example if checking out the `<start-point>` commit would overwrite your
> +uncommitted changes.
> +
> +`git checkout -B <branch> [<start-point>]`::
> +
> +	The same as `-b`, except that if the branch already exists it
> +	resets `_<branch>_` to the start point instead of failing.
s/`_<branch>_`/_<branch>_/
The backticks causes it to be rendered with the underlines.
Show 14 quoted lines
>
>  `git checkout --detach [<branch>]`::
>  `git checkout [--detach] <commit>`::
> @@ -157,16 +151,14 @@ of it").
>  	see linkgit:git-branch[1] for details.
>
>  `-B <new-branch>`::
> -	Creates the branch _<new-branch>_, start it at _<start-point>_;
> -	if it already exists, then reset it to _<start-point>_. And then
> -	check the resulting branch out.  This is equivalent to running
> -	`git branch` with `-f` followed by `git checkout` of that branch;
> -	see linkgit:git-branch[1] for details.
> +	The same as `-b`, except that if the branch already exists it
> +	resets `_<branch>_` to the start point instead of failing.
s/`_<branch>_`/_<branch>_/
Show 12 quoted lines
>
>  `-t`::
>  `--track[=(direct|inherit)]`::
>  	When creating a new branch, set up "upstream" configuration. See
> -	`--track` in linkgit:git-branch[1] for details.
> +	`--track` in linkgit:git-branch[1] for details. As a convenience,
> +	--track without -b implies branch creation.
>  +
>  If no `-b` option is given, the name of the new branch will be
>  derived from the remote-tracking branch, by looking at the local part of
> --
> gitgitgadget
Previous: Julia Evans via GitGitGadgetNext: kristofferhaugsbakk@fastmail.com
Message 54 of 68 in “doc: git-checkout: clarify DESCRIPTION section”
  1. 0/5 doc: git-checkout: clarify DESCRIPTION sectionJulia Evans via GitGitGadget, Aug 25, 2025
  2. 1/5 doc: git-checkout: clarify introJulia Evans via GitGitGadget, Aug 25, 2025
  3. Junio C HamanoAug 26, 2025
  4. Junio C HamanoAug 26, 2025
  5. Julia EvansAug 26, 2025
  6. D. Ben KnobleAug 28, 2025
  7. Julia EvansAug 28, 2025
  8. Junio C HamanoAug 28, 2025
  9. D. Ben KnobleAug 29, 2025
  10. Junio C HamanoAug 29, 2025
  11. D. Ben KnobleSep 3, 2025
  12. 2/5 doc: git-checkout: clarify `git checkout <branch>`Julia Evans via GitGitGadget, Aug 25, 2025
  13. Junio C HamanoAug 26, 2025
  14. Julia EvansAug 28, 2025
  15. Junio C HamanoAug 28, 2025
  16. Julia EvansAug 28, 2025
  17. 3/5 doc: git-checkout: don't use "reset"Julia Evans via GitGitGadget, Aug 25, 2025
  18. 4/5 doc: git-checkout: deduplicate --detach explanationJulia Evans via GitGitGadget, Aug 25, 2025
  19. 5/5 doc: git-checkout: clarify restoring files sectionJulia Evans via GitGitGadget, Aug 25, 2025
  20. Junio C HamanoAug 26, 2025
  21. Julia EvansAug 28, 2025
  22. D. Ben KnobleAug 28, 2025
  23. Julia EvansAug 28, 2025
  24. Junio C HamanoAug 28, 2025
  25. D. Ben KnobleAug 29, 2025
  26. 0/5 doc: git-checkout: clarify DESCRIPTION sectionJulia Evans via GitGitGadget, Aug 29, 2025
  27. 1/5 doc: git-checkout: clarify introJulia Evans via GitGitGadget, Aug 29, 2025
  28. Junio C HamanoAug 29, 2025
  29. Julia EvansSep 2, 2025
  30. 2/5 doc: git-checkout: clarify `git checkout <branch>`Julia Evans via GitGitGadget, Aug 29, 2025
  31. Junio C HamanoAug 29, 2025
  32. Julia EvansSep 2, 2025
  33. 3/5 doc: git-checkout: don't use "reset"Julia Evans via GitGitGadget, Aug 29, 2025
  34. Junio C HamanoAug 29, 2025
  35. Julia EvansSep 1, 2025
  36. Junio C HamanoSep 2, 2025
  37. 4/5 doc: git-checkout: deduplicate --detach explanationJulia Evans via GitGitGadget, Aug 29, 2025
  38. 5/5 doc: git-checkout: clarify restoring files sectionJulia Evans via GitGitGadget, Aug 29, 2025
  39. 0/6 doc: git-checkout: clarify DESCRIPTION sectionJulia Evans via GitGitGadget, Sep 3, 2025
  40. 1/6 doc: git-checkout: clarify introJulia Evans via GitGitGadget, Sep 3, 2025
  41. 2/6 doc: git-checkout: clarify `git checkout <branch>`Julia Evans via GitGitGadget, Sep 3, 2025
  42. 3/6 doc: git-checkout: clarify `-b` and `-B`Julia Evans via GitGitGadget, Sep 3, 2025
  43. 4/6 doc: git-checkout: deduplicate --detach explanationJulia Evans via GitGitGadget, Sep 3, 2025
  44. 5/6 doc: git-checkout: split up restoring files sectionJulia Evans via GitGitGadget, Sep 3, 2025
  45. 6/6 doc: git-checkout: clarify restoring files sectionJulia Evans via GitGitGadget, Sep 3, 2025
  46. Junio C HamanoSep 3, 2025
  47. Junio C HamanoSep 3, 2025
  48. Julia EvansSep 3, 2025
  49. 0/7 doc: git-checkout: clarify DESCRIPTION sectionJulia Evans via GitGitGadget, Sep 10, 2025
  50. 1/7 doc: git-checkout: clarify intro sentenceJulia Evans via GitGitGadget, Sep 10, 2025
  51. 2/7 doc: git-checkout: clarify ARGUMENT DISAMBIGUATIONJulia Evans via GitGitGadget, Sep 10, 2025
  52. 3/7 doc: git-checkout: clarify `git checkout <branch>`Julia Evans via GitGitGadget, Sep 10, 2025
  53. 4/7 doc: git-checkout: clarify `-b` and `-B`Julia Evans via GitGitGadget, Sep 10, 2025
  54. Kristoffer HaugsbakkSep 29, 2025
  55. doc: git-checkout: fix placeholder markupkristofferhaugsbakk@fastmail.com, Oct 2, 2025
  56. doc: git-checkout: fix placeholder markupkristofferhaugsbakk@fastmail.com, Oct 16, 2025
  57. Julia EvansOct 17, 2025
  58. doc: git-checkout: fix placeholder markupkristofferhaugsbakk@fastmail.com, Oct 17, 2025
  59. 5/7 doc: git-checkout: deduplicate --detach explanationJulia Evans via GitGitGadget, Sep 10, 2025
  60. 6/7 doc: git-checkout: split up restoring files sectionJulia Evans via GitGitGadget, Sep 10, 2025
  61. 7/7 doc: git-checkout: clarify restoring files sectionJulia Evans via GitGitGadget, Sep 10, 2025
  62. Ben KnobleSep 11, 2025
  63. Julia EvansSep 12, 2025
  64. Kristoffer HaugsbakkSep 12, 2025
  65. Junio C HamanoSep 15, 2025
  66. Kristoffer HaugsbakkSep 16, 2025
  67. Junio C HamanoSep 12, 2025
  68. Junio C HamanoSep 17, 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.