如何应用.diff文件

时间:2014-01-22 05:23:08

标签: git merge diff patch

我有一个.diff类型的文件,好像吹了:

diff --git a/res/User.lua b/res/User.lua
index db8c2cc..4d2af0f 100644
--- a/res/User.lua
+++ b/res/User.lua
@@ -5,6 +5,7 @@ resetPassword = {}
+UserInfo = {}

我应该手动修改我的本地User.lua,还是可以像应用补丁文件一样应用diff文件? (或者应该将.diff文件转换为.patch文件,如何?)

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

  

应该将.diff文件转换为.patch文件,如何?

不,扩展名并不重要。内容是。

您可以尝试,如果不起作用,请on this comment后退Евгений Чорба (Evgeny Solis)

  

对于那些没有补丁命令的人而言, git apply 什么都不做。解决方案是:
  我们来修改补丁文件!

     

diff --git a/uc_attribute/uc_attribute.admin.inc b/uc_attribute/uc_attribute.admin.inc
index b9a978a..ef33ca3 100644
--- a/uc_attribute/uc_attribute.admin.inc
+++ b/uc_attribute/uc_attribute.admin.inc
  

要:

diff --git ubercart/uc_attribute/uc_attribute.admin.inc ubercart/uc_attribute/uc_attribute.admin.inc
index 1c35bf8..587fa67 100755
--- ubercart/uc_attribute/uc_attribute.admin.inc
+++ ubercart/uc_attribute/uc_attribute.admin.inc
  

使用

从项目根目录应用补丁      

git apply -p0 PATCHFILE.patch

     

详细:
  您应该将补丁文件中的“a/”和“b/”替换为“<projectname>/”(在我的示例中为“ubercart”)

     

应用补丁后,您可能会看到类似

的警告
warning: ubercart/uc_attribute/uc_attribute.admin.inc has type 100755, expected 100644
  

没关系,别担心。

     

请注意!如果补丁包含多个文件的差异,则应替换所有出现的“a/<anypath>”和“b/<anypath>


注意:使用git apply时,OP chengpeiseen the other error message

  got a error: fatal: corrupt patch at line 7

记录在“fatal: corrupt patch at line XX” when staging single line

  

在文件末尾添加换行符会修复它,并删除它们会导致它。


Magnus Bäck建议in the comments

  

不是编辑补丁文件以删除目录前缀a/b/,而是运行 patch -p1 以自动删除第一个目录组件。

tremby添加in the comments

  

要在没有a/b/前缀的情况下从git生成差异,您可以使用--no-prefix作为git diff的选项