クライアントは、gitをインストールせずにgit diff
で作成されたパッチをどのように適用できますか? patch
コマンドを使用しようとしましたが、常にファイル名にパッチを要求します。
git diff > patchfile
そして
patch -p1 < patchfile
動作しますが、多くの人がコメントや他の回答で気づいたように、パッチは追加、削除、名前の変更を理解していません。ハンドルファイルの追加、削除、名前の変更が必要な場合は、git apply patchfile
以外のオプションはありません。
編集2015年12月
patch
コマンドの最新バージョン(2.7、2012年9月にリリース)「diff --git」形式のほとんどの機能をサポートします。これには、名前の変更とコピー、権限の変更、symlink diffs(まだバイナリ差分ではありません)( リリース発表 )。
そのため、patch
の現在/最新バージョンを使用している場合は、git
を使用してその差分をパッチとして適用する必要はありません。
これを試して:
patch -p1 < patchfile
つかいます
git apply patchfile
可能なら。
patch -p1 < patchfile
潜在的な副作用があります。
git apply
は、git diff
形式で記述されているファイルの追加、削除、名前変更も処理しますが、これはpatch
ではできません。最後に、git apply
は、すべてが適用されるか、または何も適用されない「すべてを適用またはすべてを中止」するモデルですが、patchはパッチファイルを部分的に適用し、作業ディレクトリを奇妙な状態のままにします。
私が使う
patch -p1 --merge < patchfile
このようにして、競合は通常どおり解決されます。