51

行末がUnix、NetBeans、vimに設定されたTextWranglerでphpファイルを編集してみました。差分をパッチに保存してから適用しようとすると、空白エラーが発生します。入力すると、行の終わりにgit diff表示^Mされますが、vimでこれらを手動で削除すると、パッチファイルが破損していると表示され、パッチがまったく適用されません。

次のコマンドでパッチを作成します。

git diff > patchname.patch

そして、パッチを適用するファイルのクリーンバージョンをチェックアウトして入力することで適用します

git apply patchname.patch

空白エラーなしでこのパッチを作成するにはどうすればよいですか?以前にパッチを作成したことがありますが、この問題が発生することはありません。

4

7 に答える 7

47

git apply --reject --whitespace=fix mychanges.path

于 2014-12-09T06:48:44.943 に答える
42

それらはハードエラーだと確信していますか?デフォルトでは、git は空白エラーについて警告しますが、それでも受け入れます。ハード エラーの場合は、いくつかの設定を変更したに違いありません。--whitespace=フラグを使用して、git applyこれを呼び出しごとに制御できます。試す

git apply --whitespace=warn patchname.patch

これにより、警告するが受け入れるというデフォルトの動作が強制されます。--whitespace=nowarnを使用して、警告を完全に削除することもできます。

これを制御する構成変数はapply.whitespace.


参考までに、ここの空白エラーはパッチのエラーではありません。デフォルトでは、パッチを適用するときに git が文句を言うのは、コード スタイルの問題です。特に、末尾の空白が嫌いです。同様git diffに、空白エラーが強調表示されます (端末に出力していて、色がオンになっている場合)。すべてのプロジェクトが空白に熱狂的であるとは限らないため、デフォルトの動作は警告しますが、とにかくパッチを受け入れます。

于 2013-01-25T01:00:43.813 に答える
8

patch -p1 < filename.patch を試してください

于 2014-03-21T08:38:52.873 に答える
2

1行のソリューションは次のとおりです。

emacs <filename> -f delete-trailing-whitespace -f save-buffer -f kill-emacs

ソース: https://wiki.gnome.org/Projects/GnomeShell/Development/WorkingWithPatches

于 2015-01-19T00:20:55.963 に答える