In git 2.38.0 it is not possible to create a file with apply when the diff looks like git diff. It either complains that the source file is not /dev/null or that it is not the same as the destination. something.patch No author found in something.patch --- Sometext Author: A. U. Thor <au@xxxxxxxx> gitdiff_verify_name: line: b/somefile.c @@ -0,0 +1,379 @@ +/* ... , isnull: 0, *name: somefile.c, side: 1, another: (null) error: git apply: bad git-diff - inconsistent new filename on line 80 something.patch No author found in something.patch --- Sometext Author: A. U. Thor <au@xxxxxxxx> gitdiff_verify_name: line: a/somefile.c +++ b/somefile.c @@ -0,0 +1,379 @@ +/* ... , isnull: 1, *name: (null), side: 0 error: git apply: bad git-diff - expected /dev/null on line 80 Signed-off-by: Michal Suchanek <msuchanek@xxxxxxx> --- apply.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apply.c b/apply.c index 2b7cd930ef..9dd01da271 100644 --- a/apply.c +++ b/apply.c @@ -928,7 +928,7 @@ static int gitdiff_verify_name(struct gitdiff_data *state, return error(_("git apply: bad git-diff - expected /dev/null, got %s on line %d"), *name, state->linenr); another = find_name(state->root, line, NULL, state->p_value, TERM_TAB); - if (!another || strcmp(another, *name)) { + if (another && strcmp(another, *name)) { free(another); return error((side == DIFF_NEW_NAME) ? _("git apply: bad git-diff - inconsistent new filename on line %d") : -- 2.38.0