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

Re: [PATCH 2/2] doc: git-worktree: Add side by side branch checkout example

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 2, 2025, 18:06 UTC
Message-ID
<xmqqcy75w531.fsf@gitster.g>
In-Reply-To
<1d5b41562937d83be261d054989b04db6cb94a86.1759420102.git.msuchanek@suse.de>
Michal Suchanek <msuchanek@suse.de> writes:
Show 22 quoted lines
> Signed-off-by: Michal Suchanek <msuchanek@suse.de>
> ---
>  Documentation/git-worktree.adoc | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/Documentation/git-worktree.adoc b/Documentation/git-worktree.adoc
> index ec31863aec..122b191ff9 100644
> --- a/Documentation/git-worktree.adoc
> +++ b/Documentation/git-worktree.adoc
> @@ -525,6 +525,16 @@ $ popd
>  $ git worktree remove ../temp
>  ------------
>  
> +Side by side branch checkouts for a repository using multiple worktrees
> +
> +------------
> +mkdir some-repository
> +cd some-repository
> +git clone --bare gitforge@someforge.example.com:some-org/some-repository .git
> +git --git-dir=.git worktree add some-branch
> +git --git-dir=.git worktree add another-branch
> +------------

It is a good example to have a bare clone and get worktrees attached to it, but I do not think that it is a great idea to call that bare clone ".git". It makes it confusing if that some-repository/ directory that has a ".git" directory is a non-bare clone with no working tree files, or if it is a directory that Git has no knowledge about, that happens to have a single bare repository plus worktrees. The answer is the latter, but I suspect that Git itself would probably be confused (i.e. "cd some-repository && git status" ---if you try it, what does it say?).

Naming it after the project may make it more apparent what is going on when the user goes into that top-level shell directory, perhaps like this, if we were working with a "bunny" project:

    mkdir bunny
    cd bunny
    git clone --bare gitforge@someforge.example.com:some-org/bunny bunny.git
    git --git-dir=bunny.git worktree add some-branch
    git --git-dir=bunny.git worktree add another-branch

Then when you "cd bunny && ls", you'd see the bare repository bunny.git with two checkouts.

Having said all that.

I know some folks like such a layout for some (perhaps ideological) reason (i.e. no checkout is more special than others, everybody is equal), but I am not absolutely sure if it works better in a larger workflow in practice than having a primary worktree that is not a bare repository. If you do the above with a non-bare repository in the center, it would look like this:

    mkdir bunny-project
    cd bunny-project
    git clone gitforge@someforge.example.com:some-org/bunny main
    cd main
    git worktree add ../my-topic-1
    git worktree add ../my-topic-2

and have my interaction with the upstream project only from inside the primary worktree, i.e., "main". Additional worktrees are more or less ephemeral, and can go away.

> +
>  BUGS
>  ----
>  Multiple checkout in general is still experimental, and the support
Previous: Junio C HamanoNext: Michal Suchánek
Message 40 of 44 in “What is the reason behind not hiding git worktrees from git?”
  1. Jakub T. JankiewiczSep 27, 2025
  2. Junio C HamanoSep 27, 2025
  3. Michal SuchánekSep 27, 2025
  4. Jason ChoSep 27, 2025
  5. Jason ChoSep 27, 2025
  6. Michal SuchánekSep 30, 2025
  7. Junio C HamanoSep 30, 2025
  8. Michal SuchánekNov 19, 2025
  9. Michal SuchánekSep 30, 2025
  10. Ben KnobleOct 1, 2025
  11. Junio C HamanoOct 1, 2025
  12. Sergey OrganovOct 1, 2025
  13. Junio C HamanoOct 1, 2025
  14. Jakub T. JankiewiczOct 1, 2025
  15. Junio C HamanoOct 1, 2025
  16. Eric SunshineOct 1, 2025
  17. Junio C HamanoOct 1, 2025
  18. Michal SuchánekOct 2, 2025
  19. Junio C HamanoOct 2, 2025
  20. 1/2 doc: git-worktree: Link to examplesMichal Suchanek, Oct 2, 2025
  21. Kristoffer HaugsbakkOct 2, 2025
  22. Junio C HamanoOct 2, 2025
  23. Michal SuchánekOct 2, 2025
  24. Jean-Noël AVILAOct 5, 2025
  25. Michal SuchánekOct 10, 2025
  26. 1/2 doc: git-worktree: Link to examplesMichal Suchanek, Oct 10, 2025
  27. Eric SunshineOct 11, 2025
  28. 2/2 doc: git-worktree: Add side by side branch checkout exampleMichal Suchanek, Oct 10, 2025
  29. Eric SunshineOct 11, 2025
  30. Junio C HamanoOct 23, 2025
  31. Michal SuchánekOct 24, 2025
  32. Eric SunshineOct 24, 2025
  33. Michal SuchánekNov 18, 2025
  34. Eric SunshineNov 19, 2025
  35. Junio C HamanoJan 20, 2026
  36. 2/2 doc: git-worktree: Add side by side branch checkout exampleMichal Suchanek, Oct 2, 2025
  37. Kristoffer HaugsbakkOct 2, 2025
  38. Michal SuchánekOct 2, 2025
  39. Junio C HamanoOct 2, 2025
  40. Junio C HamanoOct 2, 2025
  41. Michal SuchánekOct 2, 2025
  42. Johannes SchindelinNov 17, 2025
  43. Junio C HamanoNov 17, 2025
  44. Ben KnobleOct 2, 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.