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

Re: Where is git checkout --orphan implemented at.

From
Jeff King <peff@peff.net>
Date
Jun 5, 2018, 17:54 UTC
Message-ID
<20180605175435.GA22321@sigill.intra.peff.net>
In-Reply-To
<2ED916AA-3E6A-4E22-9B9B-13C3B687B357@icloud.com>
On Tue, Jun 05, 2018 at 12:02:12PM -0400, Sean Hunt wrote:
Show 12 quoted lines
> I would like to see the source code to git checkout --orphan so I can
> learn how it works and so I can manually do what it does by hand on
> making a new branch with no history in the refs folder. I can only do
> it on my iPhone as my laptop has no internet or way to do it there,
> and the program on my iPhone does not have the method implemented yet
> visually to do it, forcing manual creation of the orphan branch by
> hand in the end. If the public github had all the codes to all
> commands and subcommands like the one above it would be nice or well
> at least a file that explains the source file each command and
> subcommands are from so that way a person like me can use as a
> reference to make our own git gui that has 100% of command line git
> features.
The code for "checkout --orphan" is in builtin/checkout.c[1].

But if you want to do roughly the same thing with other tools, you can do:

 git symbolic-ref HEAD refs/heads/new-branch
If you don't even have symbolic-ref handy, you can do:
  echo "ref: refs/heads/new-branch" >.git/HEAD

That's not generally recommended, since future versions of Git may change the ref storage format, but it would work with any current version of Git.

-Peff
[1] Try update_refs_for_switch(), especially:
    https://github.com/git/git/blob/61856ae69a2ceb241a90e47953e18f218e4d5f2f/builtin/checkout.c#L635
    and
    https://github.com/git/git/blob/61856ae69a2ceb241a90e47953e18f218e4d5f2f/builtin/checkout.c#L695
Previous: Sean HuntNext: Junio C Hamano
Message 2 of 4 in “Where is git checkout --orphan implemented at.”
  1. Sean HuntJun 5, 2018
  2. Jeff KingJun 5, 2018
  3. Junio C HamanoJun 11, 2018
  4. Jeff KingJun 11, 2018

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.