web-dev-qa-db-ja.com

Gitをインストールせずに `git diff`パッチを適用する方法は?

クライアントは、gitをインストールせずにgit diffで作成されたパッチをどのように適用できますか? patchコマンドを使用しようとしましたが、常にファイル名にパッチを要求します。

274
git diff > patchfile

そして

patch -p1 < patchfile

動作しますが、多くの人がコメントや他の回答で気づいたように、パッチは追加、削除、名前の変更を理解していません。ハンドルファイルの追加、削除、名前の変更が必要な場合は、git apply patchfile以外のオプションはありません。


編集2015年12月

patchコマンドの最新バージョン(2.7、2012年9月にリリース)「diff --git」形式のほとんどの機能をサポートします。これには、名前の変更とコピー、権限の変更、symlink diffs(まだバイナリ差分ではありません)( リリース発表 )。

そのため、patchの現在/最新バージョンを使用している場合は、gitを使用してその差分をパッチとして適用する必要はありません。

412

これを試して:

patch -p1 < patchfile
73
suppie

つかいます

git apply patchfile

可能なら。

patch -p1 < patchfile 

潜在的な副作用があります。

git applyは、git diff形式で記述されているファイルの追加、削除、名前変更も処理しますが、これはpatchではできません。最後に、git applyは、すべてが適用されるか、または何も適用されない「すべてを適用またはすべてを中止」するモデルですが、patchはパッチファイルを部分的に適用し、作業ディレクトリを奇妙な状態のままにします。

49
Sola Yang

私が使う

patch -p1 --merge < patchfile

このようにして、競合は通常どおり解決されます。

6
denis.peplin