On Tue, Nov 20, 2018 at 01:39:40PM +0100, Mathieu Malaterre wrote: > Here is a simple setup: > > cd /tmp > mkdir g > cd g > git init . > wget http://central.maven.org/maven2/org/apache/xmlgraphics/fop/2.1/fop-2.1.pom > git add fop-2.1.pom > git commit -m "My First Commit" > git rm fop-2.1.pom > git commit -m "Second Commit" > git format-patch HEAD~ > git reset --hard HEAD~ > git am 0001-Second-Commit.patch > Applying: Second Commit > error: patch failed: fop-2.1.pom:1 > error: fop-2.1.pom: patch does not apply > Patch failed at 0001 Second Commit > hint: Use 'git am --show-current-patch' to see the failed patch > When you have resolved this problem, run "git am --continue". > If you prefer to skip this patch, run "git am --skip" instead. > To restore the original branch and stop patching, run "git am --abort". > > What is the black magic to get `git am` to understand this patch ? The file in question uses CRLF line endings. $ git am --keep-cr 0001-Second-Commit.patch Applying: Second Commit For explanation I quote ad2c928001 (git-am: Add command line parameter `--keep-cr` passing it to git-mailsplit, 2010-02-27): c2ca1d7 (Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings, 2009-08-04) fixed "git mailsplit" to help people with MUA whose output from save-as command uses CRLF as line terminators by stripping CR at the end of lines. However, when you know you are feeding output from "git format-patch" directly to "git am", and especially when your contents have CR at the end of line, such stripping is undesirable. To help such a use case, teach --keep-cr option to "git am" and pass that to "git mailinfo".