- ベストアンサー
gitのpatch当ての方法
gitから変更があると来るメールの↓のようなパッチを当てる方法を教えて下さい 検索しても、ある程度以上のスキルに合わせて書かれているので理解出来ません。 よろしくお願いします Patch Links: •ttps://github.com/xxxxxxxx/xxxxx/pull/15.patch •ttps://github.com/xxxxxxxx/xxxxx//pull/15.diff
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一応念のためレスを… >OSはWindows7 git bashやwindowsのコマンドプロンプトでは出来ませんか? windowsにはpatchコマンドは標準ではついていません。patchコマンドをunix版からwindows版に移植したものがあるので、どうしても使いたいのであればそちらを使って下さい。 >>pullとかcloneしなおすとかで、最新状態にすればいいのでは? >今はそういう状態です。ただ差分ですめば便利かなと >以前は短い差分はコピペで済ませてました^^; patchの当て方や戻し方を理解していないのであれば(あと当てたときの動作が以前とどう変わるかをソースからある程度予測できない場合)、pullなりcloneするなりしたほうがいいです。 パッチを当てて別なところがおかしくなるなどの問題が発生することもあるので、ある程度は理解が必要です。 >VisualStudio2010でソースコードビルドしてます 環境依存の部分とかありませんでしたか?そこが少し気になります。といっても環境依存するようなところはビルドするときにエラーがでるのかな…
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
まずは、あなたがそのパッチを使おうとしているOSは何か、patchコマンドやそれに相当するツールは使える状態になっているのか、をはっきりさせてください。 > diff --git a/xxxx/xxxx/xxxx/xxxx.cs b/xxxx/xxxx/xxxx/xxxx.cs > こんな感じの場合どうなんでしょう? そのようなファイルが「パッチファイル」です。 diffコマンドの出力をそのまま保存したテキストファイルです。 前後の差分なので、行数が少なければ、手動での変更もできます。 > またパッチファイルはメモ帳で保存?拡張子は? > パッチファイルを置く場所は? なんでも構いません。 (#1の/path/to/patch_file に相当する箇所に) ファイルを指定するのが普通なので。 .patchや.diffが使われることもありますが、それでないといけない、というわけではありません。 で、パッチの当て方がわからないなら、pullとかcloneしなおすとかで、最新状態にすればいいのでは? > 検索しても、ある程度以上のスキルに合わせて書かれているので理解出来ません。 まあ、それはそうでしょう。 パッチを必要とするのは、ソースコードからビルドして使うような、上級者がほとんどでしょうから。
お礼
取り合えず疑問は解決しました。 ありがとうございました。
補足
>パッチを使おうとしているOSは何か、patchコマンドやそれに相当するツールは使える状態になっているのか OSはWindows7 git bashやwindowsのコマンドプロンプトでは出来ませんか? >pullとかcloneしなおすとかで、最新状態にすればいいのでは? 今はそういう状態です。ただ差分ですめば便利かなと 以前は短い差分はコピペで済ませてました^^; VisualStudio2010でソースコードビルドしてます
- pa_cotta
- ベストアンサー率43% (25/58)
unix系OSであれば、patchコマンドで該当のパッチを適応できます。 コマンドはこんな感じです。 patch < /path/to/patch_file ただし、はじめてパッチを当てる場合は-Cオプションをつけてエラーメッセージが出ないかどうかを確認しましょう。 -Cオプションは実際にパッチを当てずに処理内容を表示するオプションです。 patch -C < /path/to/patch_file 該当のパッチをcloneするなりダウンロードするなりしてローカルに保存してから行って下さい。 windowsの場合は分かりません
補足
diff --git a/xxxx/xxxx/xxxx/xxxx.cs b/xxxx/xxxx/xxxx/xxxx.cs こんな感じの場合どうなんでしょう? またパッチファイルはメモ帳で保存?拡張子は? パッチファイルを置く場所は? 疑問ばかり?
お礼
取り合えず疑問は解決しました。 ありがとうございました。
補足
取り合えずpatchの基本からやってみました。 patchとdiffは移植しました。 diff -u hoge1.txt hoge2.txt patch -p0 < hogepatch.txt patch -R < hogepatch.txt で階層無しで、差分出力、パッチ当て、パッチ解除出来ました。 diff -u foo/hoge1.txt bar/hoge2.txt patch -p0 < hogepatch2.txt patch -R < hogepatch2.txt は差分出力、パッチ当ては出来るけどパッチ解除は 「Unreversed patch detected! Ignore -R?[n]」と出ます。何故でしょう? あとdiffの差分出力をテキストファイルに出力する方法を教えて下さい 現在は範囲コピーしてます。