如何应用.diff文件

che*_*pei 6 git diff merge 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 = {}
Run Code Online (Sandbox Code Playgroud)

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

会感激任何帮助.

Von*_*onC 5

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

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

你可以试试,如果不能正常工作,后备对此有何评论??????? ????? (叶夫根尼·索利斯)

对于那些没有补丁命令并且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
Run Code Online (Sandbox Code Playgroud)

到:

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
Run Code Online (Sandbox Code Playgroud)

使用从项目根应用补丁

git apply -p0 PATCHFILE.patch

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

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

warning: ubercart/uc_attribute/uc_attribute.admin.inc has type 100755, expected 100644
Run Code Online (Sandbox Code Playgroud)

没事不用担心。

笔记!如果补丁包含多个文件的差异,您应该替换所有出现的“ a/<anypath>”和“ b/<anypath>


注:OP chengpei已经看到了其他错误消息当使用git apply

  got a error: fatal: corrupt patch at line 7
Run Code Online (Sandbox Code Playgroud)

暂存单行时记录在“ ”中fatal: corrupt patch at line XX

在文件末尾有换行符可以修复它,删除它们会导致它。


Magnus Bäck在评论中推荐:

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

tremby在评论中补充道:

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