Git apply不会创建新文件?

Via*_*iuk 7 git diff

我试图通过创建补丁diffapply它.我的补丁有新文件,在apply我收到错误后.

git diff master origin/master > patch1.diff
git apply patch1.diff -v

Checking patch test3...
error: test3: No such file or directory
Run Code Online (Sandbox Code Playgroud)

补丁:

diff --git a/test3 b/test3
deleted file mode 100644
index df6b0d2..0000000
--- a/test3
+++ /dev/null
@@ -1 +0,0 @@
-test3
Run Code Online (Sandbox Code Playgroud)

我做错了什么或者git apply没有创建新文件?

Car*_*rum 10

您正在向后创建补丁 - 该补丁正在尝试删除该文件.我想你想要:

git diff origin/master master > patch1.diff
Run Code Online (Sandbox Code Playgroud)

您可能会发现git format-patch有用.如果您目前已经master签出,您可以这样做:

git format-patch origin/master
Run Code Online (Sandbox Code Playgroud)

该命令将产生一堆补丁文件,每个提交一个不同的分支和origin/master.然后,您可以应用那些使用git am并保留所有额外数据,如提交消息和作者信息.

  • 如果使用`--stdout`选项,它会更方便.`git format-patch --stdout origin/master | pbcopy`将补丁放在我的剪贴板(OS X)和`pbpaste |上 git am`将把它应用到当前的回购. (2认同)