2017-07-19 1557 views
0

我有一個包含多個文件差異的差異文件。我希望它適用於當前分支。到目前爲止,我已經嘗試使用git apply changes.diff,其中fatal: Unrecognized input失敗。差異文件如下所示。git 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> 

請注意,我無法在當前情況下重新創建diff文件。

研究

經研究我所遇到this answer這表明它與--color=never在補丁文件的創建時間被不設置有問題。我猜想相同的應該與我的差異文件工作,並試圖通過使用perl -pe 's/\x1b.*?[mGKH]//g' changes.diff > changes_nocolor.diff,這是行不通的顏色字符。

問題是,我在右邊的大道?我究竟做錯了什麼?我怎樣才能解決這個問題?或者我可以解決這個問題嗎?

回答

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.特別是,如果同一行出現在源文件的多個位置,則正常差異可能很容易在錯誤的位置應用錯誤

+0

嗯..是否有可能將普通差異轉換爲上下文差異?就像你已經指出安全的方式更好一樣... –

+0

不,不可能安全地做到這一點:你需要的環境根本就不存在。你可以將它轉換爲上下文差異(沒有上下文)的*表單*,但沒有任何收益,除了可能使用'git apply'而不是'patch'。 (但'patch'應該被廣泛使用。) – torek

+0

謝謝。我會更深入地使用'patch'命令來應用這個。 :) –