2009-10-20 184 views

回答

17

修補程序,即git diff收益率,由patch工具正確處理。

patch跳過所有附加信息git附加到補丁文件。要應用此修補程序,最有可能需要-p1選項。

+0

謝謝。將嘗試它,我想我需要更多的咖啡...... – 2009-10-20 13:12:51

+2

git format-patch生成的補丁也可以通過GNU補丁正確執行......除非它們是使用-M/-C選項生成的並且包含有關重命名的信息等。 – 2009-10-20 14:07:18

+2

從'patch'手冊頁:「patch試圖跳過任何前導垃圾,應用diff,然後跳過任何尾隨垃圾。」 git diffs中最大的獨特之處是增加了模式線(例如「index ...」,「rename ...」,「new file ...」),patch可以簡單地跳過這些。 Git也以文件名爲前綴,例如「a/path/to/file」,但是這可以通過patch -p1跳過。 – Cascabel 2009-10-20 14:54:30

1

以下接受的答案狀態:

補丁,即git的差異的產率,被正確地通過修補工具加工。

我敢肯定我遇到了這種情況,這是不正確的。 /usr/bin/patch只是默默無聞地(沒有報告錯誤)忽略了我的補丁包括文件重命名信息,從而打破了部署(幸運的是,我現在只測試部署:-) ...

我發佈這個替代性答案作爲對其他人遇到同樣的問題,因爲我正在摸索我的頭一段時間...也評論StackOverflow的答案顯然不能包含引號。

具有諷刺意味的是,我剛剛切換到統一差異格式來解決此問題,現在由於統一差異不能表示創建空文件(例如__init__.py),所以我的部署以不同方式打破。談論在一個搖滾和一個困難的地方之間!