我有一个diff文件,其中包含多个文件的差异。我希望它应用于当前分支。到目前为止,我已尝试使用git apply changes.diff
失败的fatal: Unrecognized input
。 Diff文件如下所示。
#*#*#*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>
请注意,在当前情况下,我无法重新创建差异文件。
研究
经过研究,我遇到了this answer,这表明在补丁文件创建期间未设置--color=never
是一个问题。我猜这同样应该与我的差异文件一起使用,并尝试使用perl -pe 's/\x1b.*?[mGKH]//g' changes.diff > changes_nocolor.diff
删除颜色字符,但这并不起作用。
问题是,我是在正确的大道上吗?我究竟做错了什么?我怎样才能解决这个问题?或者我可以解决这个问题吗?
答案 0 :(得分:3)
该差异不是上下文差异,而是what the Wikipedia entry calls normal diff output。另请参阅How to make "git diff" output normal diff format (non-unified, non-context)? Git无法应用此非上下文类型的差异。
patch utility可以应用普通差异输出。 There are good reasons to prefer context or unified diffs, though.特别是,如果同一行出现在源文件的多个位置,则正常差异很容易错误 - 应用于错误的位置。