I've just run into an unexpected looking range-diff generated by 'git format-patch -1 --range-diff=...'. While the 'git range-diff' command correctly pairs up the old and new versions of the commit, 'git format-patch --range-diff' somehow doesn't and reports it in a weird way. The test below demonstrates the issue, though it doesn't fail but only prints the outputs of those commands: --- >8 --- #!/bin/sh test_description='test' . ./test-lib.sh test_expect_success 'test' ' test_tick && printf "%s\n" 0 1 2 3 4 5 6 7 8 9 >file && git add file && git commit -m initial && git checkout -b v1 && echo foo >>file && git commit -m change file && git checkout -b v2 master && echo bar >>file && git commit -m change file && : The output of the range-diff command is what I would expect to be included in the generated patch && git range-diff v1...v2 && : But that is not what we get embedded in the generated patch && git format-patch -1 --range-diff=v1...v2 v2 && sed -n -e "/^Range-diff:$/,/^$/ p" 0001-change.patch && : Adding the range-diff to the cover letter doesnt seem to help && git format-patch -1 --range-diff=v1...v2 --cover-letter v2 && sed -n -e "/^Range-diff:$/,$ p" 0000-cover-letter.patch ' test_done --- 8< --- And here is the relevant part of the output: + : The output of the range-diff command is what I would expect to be included in the generated patch + git range-diff v1...v2 1: f8c2d0b ! 1: 83c34a8 change @@ -9,4 +9,4 @@ 7 8 9 -+foo ++bar + : But that is not what we get embedded in the generated patch + git format-patch -1 --range-diff=v1...v2 v2 0001-change.patch + sed -n -e /^Range-diff:$/,/^$/ p 0001-change.patch Range-diff: 1: 83c34a8 = 1: 83c34a8 change 2: f8c2d0b < -: ------- change + : Adding the range-diff to the cover letter doesnt seem to help + git format-patch -1 --range-diff=v1...v2 --cover-letter v2 0000-cover-letter.patch 0001-change.patch + sed -n -e /^Range-diff:$/,$ p 0000-cover-letter.patch Range-diff: 1: 83c34a8 = 1: 83c34a8 change 2: f8c2d0b < -: ------- change -- 2.18.0.584.g40ce41604d