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

Re: 'HEAD' is not a commit (according to git-checkout)

From
René Scharfe <l.s.r@web.de>
Date
May 21, 2020, 19:49 UTC
Message-ID
<01fe37e2-6188-c148-0795-ec4a9066effd@web.de>
In-Reply-To
<CACqwCQiLpZ1HFzgJw0p0KR3jXNsxkhjXmF_huzhv+qkMZmybBQ@mail.gmail.com>
Am 21.05.20 um 21:00 schrieb Dana Dahlstrom:
Show 15 quoted lines
> What did you do before the bug happened? (Steps to reproduce your issue)
>
>   $ git clone https://github.com/githubtraining/hellogitworld.git
>   $ cd hellogitworld
>   $ git checkout -b work -t master HEAD
>   fatal: 'HEAD' is not a commit and a branch 'work' cannot be created from it
>   $ git show -s --oneline
>   ef7bebf (HEAD -> master, origin/master, origin/HEAD) Fix groupId […]
>   $ git checkout -b work -t master ef7bebf
>   fatal: 'ef7bebf' is not a commit and a branch 'work' cannot be created from it
>
> What did you expect to happen? (Expected behavior)
>
>   I expected a new branch named 'work' to be created and checked out,
>   pointing to commit ef7bebf and with upstream branch set to 'master'.
The option -t/--track doesn't take an argument.  Try this:
	git checkout -b work -t master

... or perhaps this if you want to track the upstream branch instead of the local one:

	git checkout -b work -t origin/master
These days I'd use this, though:
	git switch --create=work --track origin/master
Show 6 quoted lines
> What happened instead? (Actual behavior)
>
>   I saw these erroneous messages (copied from above):
>
>   fatal: 'HEAD' is not a commit and a branch 'work' cannot be created from it
>   fatal: 'ef7bebf' is not a commit and a branch 'work' cannot be created from it

This message is puzzling, but what it means is that the extra "HEAD" and "ef7bebf" you gave are not being interpreted as a commit to use as the start point of the new branch and git checkout just doesn't know what to do with them.

The message used to read, which was a bit worse:
  fatal: Cannot update paths and switch to branch 'work' at the same time.
  Did you intend to checkout 'HEAD' which can not be resolved as commit?
If you pass extra arguments to git switch it reports, which is better:
  fatal: only one reference expected
René
Previous: Jeff King
Message 16 of 16 in “'HEAD' is not a commit (according to git-checkout)”
  1. Dana DahlstromMay 21, 2020
  2. Jeff KingMay 21, 2020
  3. René ScharfeMay 23, 2020
  4. Jeff KingMay 23, 2020
  5. 1/2 checkout: add tests for -b and --trackRené Scharfe, May 24, 2020
  6. Jeff KingMay 27, 2020
  7. René ScharfeMay 28, 2020
  8. 2/2 checkout: improve error messages for -b with extra argumentRené Scharfe, May 24, 2020
  9. Jeff KingMay 27, 2020
  10. René ScharfeMay 24, 2020
  11. Junio C HamanoMay 24, 2020
  12. Jeff KingMay 27, 2020
  13. Junio C HamanoMay 27, 2020
  14. Randall S. BeckerMay 27, 2020
  15. Jeff KingMay 27, 2020
  16. René ScharfeMay 21, 2020

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.