2013-03-07 100 views
5

我试图通过diffapply来创建补丁。我的补丁有新文件,并在apply后出现错误。Git应用不会创建新文件?

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

Checking patch test3... 
error: test3: No such file or directory 

补丁:

diff --git a/test3 b/test3 
deleted file mode 100644 
index df6b0d2..0000000 
--- a/test3 
+++ /dev/null 
@@ -1 +0,0 @@ 
-test3 

我在做什么错误或git apply不创建新的文件?

+1

是否有你不想使用'git format-patch'的原因? – 2013-03-07 22:54:30

+0

是的,共同的兴趣) – 2013-03-07 23:02:39

回答

8

你正在创建你的补丁 - 该补丁正试图删除该文件。我认为你想要:

git diff origin/master master > patch1.diff 

你可能会发现git format-patch是有帮助的。如果您目前有master签出,你可以这样做:

git format-patch origin/master 

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

+1

如果你使用'--stdout'选项,它会更加方便。 'git format-patch --stdout origin/master | pbcopy'把补丁放在我的剪贴板(OS X)和'pbpaste |上git am'会将其应用于当前的回购。 – 2013-03-07 23:02:27

+0

@凯文 - 我喜欢它! – 2013-03-07 23:03:17

+0

@CarlNorum愚蠢的我,谢谢。 – 2013-03-07 23:08:52