2017-02-22 97 views
6

我試圖應用包含二進制文件與git apply但只有文件被添加的修補程序。我試着運行git apply failing.patch -v,它打印的東西類似於:Git應用跳過修補程序

跳過的補丁'file.txt'。
檢查修補程序file.bin ...
乾淨地應用修補程序file.bin。

我怎樣才能知道跳過的原因是什麼?由於目前的消息不是很有啓發性。

+0

修補程序通常在其包含的更改已應用於過去時跳過。這有很多可能的原因:合併,櫻桃選擇,手動或使用其他補丁等操作變化。 – axiac

+0

我也想過,但事實並非如此。 –

回答

7

我發現通過運行patch -p1 < failing.patch其印刷

無法找到文件在這提醒了我,我是不是在根目錄下輸入線5

修補問題。

我不明白爲什麼no one had asked this before以及爲什麼詳細消息不是詳細的。

此外,連official documentation都沒有提到跳過和可能的原因。

1

在嘗試跨項目移植更改時遇到此問題。 git apply似乎忽略修補程序文件路徑上的任何目錄名稱,如果索引行與目標存儲庫中的文件哈希不匹配,它也拒絕應用。我不得不使用這些選項(其中--no-index似乎是無證)更好的成功:

git apply --verbose --no-index --directory {subdir} {patch-file} 
0

得到了同樣的問題。在我的情況下,補丁目標的某些父目錄中的錯誤來源是.git文件夾。解決方案是將修補程序目標移到該父目錄之外。