2011-08-04 3 views
2

現在のディレクトリにあるファイルにパッチを適用します。パッチファイルのパスには、/ FILETOPATCH.something b/FILETOPATCH.somethingと表示されます。これをgitで使うと、applyは動作しません。パッチを適用するファイルと.patchファイルは同じディレクトリにあります。gitが現在のディレクトリにパッチを適用するファイルを見つけられないのはなぜですか?

多くのバリアントで--directoryと-pオプションを試しましたが、成功しませんでした。

パッチを使用する-p1 < patchfile.patchは正常に動作しています。

.patchファイル内のリポジトリルートから絶対パスを設定した場合、git applyでも動作しますが、パッチファイルを編集しないでください。 Gitはパッチファイルを変更せずに作業を適用取得する方法

これは

diff --git a/htdocs/something/whatever/file.code b/htdocs/something/whatever/file.code 
index 385f3f4..07d8062 100644 
--- a/htdocs/something/whatever/file.code 
+++ b/htdocs/something/whatever/file.code 
... 
PATCH DATA 
... 

でもないこのを適用するにgitで動作します(これはオリジナルである)

diff --git a/file.code b/file.code 
index 385f3f4..07d8062 100644 
--- a/file.code 
+++ b/file.code 
... 
PATCH DATA 
... 

任意のアイデア?

答えて

1

どのように差分ファイルを作成しますか?

これは私のパッチの適用方法です。それがあなたを助けることを願って

git diff --full-index <SHAsum of commit A> <SHAsum of commit B> > change.patch  (full index for binary file) 
git apply --check --verbose --summary change.patch (check if it is in good patch or not) 
git apply --verbose change.patch 
関連する問題