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

git-am with an initial checkin doesn't work

From
DSDirk Süsserott <newsletter@dirk.my1.cc>
Date
Jul 14, 2009, 14:55 UTC
Message-ID
<4A5C9C66.1050100@dirk.my1.cc>
Hi,

I've a question concerning 'git am' and 'git format-patch'. It seems impossible to apply the "initial checkin" (as generated by git format-patch -N --root) to an empty repository. The following workflow might clarify that:

# Create a new repository with an initial checkin: mkdir foo && cd foo && git init echo "initial checkin" > initial.checkin git add initial.checkin && git commit -m "initial checkin"

# Kinda "export" the repo: git format-patch -1 --root; # generates 0001-initial-checkin.patch

# Re-create the repository: rm -rf .git initial.checkin && git init

# Try to "import" the patch: git am 0001-initial-checkin.patch

The latter yields to fatal: HEAD: not a valid SHA1 fatal: bad revision 'HEAD'

It works, when I git apply 0001-initial-checkin.patch instead of am'ing it, but then the thing isn't committed and I've to manually git-commit it.

Is this a bug, intentional behavior, or am I missing some magic option to git-am?

Background: I faced that problem when I tried to import some old data into Git (namely .tar.gz files) and wanted to start with 2 or 3 commits of my own (the import scripts) and then the other files on top of it. Because my import scripts didn't work well at first, I had to re-, re-, and re-import and start over all again. To always start with a clean repo, I thought adding my scripts and then saving them as 000N-*.patch would be a good idea, but the initial git-am didn't work. I know, there are other ways (git-rebase is a big friend here), but I thought git-format-patch and git-am worked symmetrically. Wrong?

Cheers,
    Dirk
Next: Junio C Hamano
Message 1 of 3 in “git-am with an initial checkin doesn't work”
  1. Dirk SüsserottJul 14, 2009
  2. Junio C HamanoJul 14, 2009
  3. Dirk SüsserottJul 15, 2009

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.