<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Documentation/format-patch-caveats.adoc, branch jch</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=jch</id>
<link rel='self' href='https://git.shady.money/git/atom?h=jch'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-02-12T22:37:56Z</updated>
<entry>
<title>doc: add caveat about round-tripping format-patch</title>
<updated>2026-02-12T22:37:56Z</updated>
<author>
<name>Kristoffer Haugsbakk</name>
<email>code@khaugsbakk.name</email>
</author>
<published>2026-02-12T22:28:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=a454cdca42fda0afaade73d7e90010289d1e7ba8'/>
<id>urn:sha1:a454cdca42fda0afaade73d7e90010289d1e7ba8</id>
<content type='text'>
git-format-patch(1) and git-am(1) deal with formatting commits as
patches and applying them, respectively. Naturally they use a few
delimiters to mark where the commit message ends. This can lead to
surprising behavior when these delimiters are used in the commit
message itself.

git-format-patch(1) will accept any commit message and not warn or error
about these delimiters being used.[1]

Especially problematic is the presence of unindented diffs in the commit
message; the patch machinery will naturally (since the commit message
has ended) try to apply that diff and everything after it.[2]

It is unclear whether any commands in this chain will learn to warn
about this. One concern could be that users have learned to rely on
the three-dash line rule to conveniently add extra-commit message
information in the commit message, knowing that git-am(1) will
ignore it.[4]

All of this is covered already, technically. However, we should spell
out the implications.

† 1: There is also git-commit(1) to consider. However, making that
     command warn or error out over such delimiters would be disruptive
     to all Git users who never use email in their workflow.
† 2: Recently patch(1) caused this issue for a project, but it was noted
     that git-am(1) has the same behavior[3]
† 3: https://github.com/i3/i3/pull/6564#issuecomment-3858381425
† 4: https://lore.kernel.org/git/xmqqldh4b5y2.fsf@gitster.g/
     https://lore.kernel.org/git/V3_format-patch_caveats.354@msgid.xyz/

Reported-by: Matthias Beyer &lt;mail@beyermatthias.de&gt;
Reported-by: Christoph Anton Mitterer &lt;calestyo@scientia.org&gt;
Reported-by: Matheus Tavares &lt;matheus.tavb@gmail.com&gt;
Reported-by: Chris Packham &lt;judge.packham@gmail.com&gt;
Helped-by: Jakob Haufe &lt;sur5r@sur5r.net&gt;
Helped-by: Phillip Wood &lt;phillip.wood@dunelm.org.uk&gt;
Signed-off-by: Kristoffer Haugsbakk &lt;code@khaugsbakk.name&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
