git diff:失败并出现致命错误:无法识别的输入
git diff : Fails with fatal: Unrecognized input
我有一个差异文件,其中包含多个文件的差异。我希望它应用于当前分支。到目前为止,我已经尝试使用 git apply changes.diff
,但因 fatal: Unrecognized input
而失败。差异文件如下所示。
#*#*#*DIFFS FOR FILE ./reporting/report/sso_usage_dd_report.rptdesign #*#*#*
74c74
< <property name="odaURL">jdbc:mysql://db.mysql.domain:3306/sso_user_data</property>
---
> <property name="odaURL">jdbc:mysql://localhost:3306/sso_user_data</property>
#*#*#*DIFFS FOR FILE ./reporting/report/sso_usage_monthly_dd_report.rptdesign #*#*#*
67c67
< <property name="odaURL">jdbc:mysql://db.mysql.domain:3306/sso_user_data</property>
---
> <property name="odaURL">jdbc:mysql://localhost:3306/sso_user_data</property>
#*#*#*DIFFS FOR FILE ./reporting/report/system_wise_access_information_report.rptdesign #*#*#*
94c94
< <property name="odaURL">jdbc:mysql://db.mysql.domain:3306/sso_user_data</property>
---
> <property name="odaURL">jdbc:mysql://localhost:3306/sso_user_data</property>
请注意,在当前情况下我无法重新创建 diff 文件。
研究
经过研究,我发现 这表明在补丁文件的创建期间未设置 --color=never
是一个问题。我猜我的 diff 文件也应该这样做,并尝试使用 perl -pe 's/\x1b.*?[mGKH]//g' changes.diff > changes_nocolor.diff
删除颜色字符,但没有用。
问题是,我走对路了吗?我究竟做错了什么?我怎样才能解决这个问题?或者我可以解决这个问题吗?
该差异不是 上下文差异,而是 what the Wikipedia entry calls normal diff output. See also How to make "git diff" output normal diff format (non-unified, non-context)? Git 无法应用这种非上下文类型的差异。
patch utility can apply normal diff output. There are good reasons to prefer context or unified diffs, though. 特别是,如果同一行出现在一个源文件的多个位置,则普通差异很容易 错误-应用在错误的位置.
我有一个差异文件,其中包含多个文件的差异。我希望它应用于当前分支。到目前为止,我已经尝试使用 git apply changes.diff
,但因 fatal: Unrecognized input
而失败。差异文件如下所示。
#*#*#*DIFFS FOR FILE ./reporting/report/sso_usage_dd_report.rptdesign #*#*#*
74c74
< <property name="odaURL">jdbc:mysql://db.mysql.domain:3306/sso_user_data</property>
---
> <property name="odaURL">jdbc:mysql://localhost:3306/sso_user_data</property>
#*#*#*DIFFS FOR FILE ./reporting/report/sso_usage_monthly_dd_report.rptdesign #*#*#*
67c67
< <property name="odaURL">jdbc:mysql://db.mysql.domain:3306/sso_user_data</property>
---
> <property name="odaURL">jdbc:mysql://localhost:3306/sso_user_data</property>
#*#*#*DIFFS FOR FILE ./reporting/report/system_wise_access_information_report.rptdesign #*#*#*
94c94
< <property name="odaURL">jdbc:mysql://db.mysql.domain:3306/sso_user_data</property>
---
> <property name="odaURL">jdbc:mysql://localhost:3306/sso_user_data</property>
请注意,在当前情况下我无法重新创建 diff 文件。
研究
经过研究,我发现 --color=never
是一个问题。我猜我的 diff 文件也应该这样做,并尝试使用 perl -pe 's/\x1b.*?[mGKH]//g' changes.diff > changes_nocolor.diff
删除颜色字符,但没有用。
问题是,我走对路了吗?我究竟做错了什么?我怎样才能解决这个问题?或者我可以解决这个问题吗?
该差异不是 上下文差异,而是 what the Wikipedia entry calls normal diff output. See also How to make "git diff" output normal diff format (non-unified, non-context)? Git 无法应用这种非上下文类型的差异。
patch utility can apply normal diff output. There are good reasons to prefer context or unified diffs, though. 特别是,如果同一行出现在一个源文件的多个位置,则普通差异很容易 错误-应用在错误的位置.