web-dev-qa-db-ja.com

Gitパッチの適用が警告なしに失敗する(エラーはないが何も起こらない)

パッチを適用しようとしていますが、git apply patchを実行してもエラーは発生しません。

sashoalm@SASHOALM-PC /c/Workspace/tesseract-git/api (master)
$ git apply ../../commit-d0d9477

sashoalm@SASHOALM-PC /c/Workspace/tesseract-git/api (master)
$

ご覧のとおり、エラーメッセージは表示されません。しかし、履歴を開くと何もコミットされず、インデックスは空です。 git applyコマンドを発行していないようです。

Googleにエラーがないので、これをトラブルシューティングする方法がわかりません。

編集:言うのを忘れていましたが、バージョン管理なしでソースを取得し、独自の空のgitリポジトリを作成して、いくつかのコミットを行ったTesseractのリポジトリからパッチを移植しようとしています。後でgit svnを使用してTesseractリポジトリのクローンを作成しましたが、今はそこにパッチを移動しようとしています。

29
sashoalm

問題をグーグルで探しているときにこれを見つけました: http://data.agaric.com/git-apply-does-not-work-from-within-local-checkout-unrelated-git-repository

git applyは、Gitバージョンのサイト内にあるモジュールにパッチを適用している場合など、gitリポジトリのローカルチェックアウト(パッチが作成されたプロジェクト用のチェックアウト以外)で使用された場合、何も失敗しません。コントロール。

使用する patch -p1 < path/file.patch代わりに。

48
B_.

B_の答えに加えて、git diff --no-prefixは、patchで-pフラグを使用する必要がないことを意味します。あなたは間違っているようです、少なくともpatchのバージョンではここにあります(2.5)。-pフラグは-p0と同じではありません。 -p0は機能します。

0
Pete