やってみた
git diff 13.1_dev sale_edit > patch.diff
その後、git apply patch.diff
別のブランチにあるが、パッチが適用されていない。 git applyで使用できるdiffからパッチファイルを作成するにはどうすればよいですか?
受信したエラー:
$ git apply --ignore-space-change --ignore-whitespace diff.diff
diff.diff:9: trailing whitespace.
diff.diff:10: trailing whitespace.
function set_change_sale_date()
diff.diff:12: space before tab in indent.
$this->sale_lib->set_change_sale_date($this->input->post('change_sale_date'));
diff.diff:14: trailing whitespace.
diff.diff:15: trailing whitespace.
function set_change_sale_date_enable()
warning: application/controllers/sales.php has type 100755, expected 100644
error: patch failed: application/controllers/sales.php:520
error: application/controllers/sales.php: patch does not apply
warning: application/language/english/sales_lang.php has type 100755, expected 100644
error: patch failed: application/language/english/sales_lang.php:134
error: application/language/english/sales_lang.php: patch does not apply
warning: application/libraries/Sale_lib.php has type 100755, expected 100644
error: patch failed: application/models/sale.php:170
error: application/models/sale.php: patch does not apply
warning: application/views/sales/register.php has type 100755, expected 100644
error: patch failed: application/views/sales/register.php:361
error: application/views/sales/register.php: patch does not apply
私はMacでこれを試しています
試してください:
git apply --ignore-space-change --ignore-whitespace patch.diff
「 git:patch does not apply 」で述べたように、これは以下によって引き起こされる可能性があります。
core.eol
in .gitattributes
ファイルは適切なアプローチです(「 コミット時にgit force file encoding 」を参照)x
')。git config core.filemode false
、その後にgit reset --hard HEAD
(コミットされていない変更がないことを確認してください。変更しないと失われます)。パッチを3者間マージとして適用できます。
git diff 13.1_dev sale_edit > patch.diff
git apply -3 patch.diff
手動で解決できるように、競合が発生するはずです。または、パッチをgit-applyに直接パイピングするワンライナーを使用することもできます。
git diff 13.1_dev sale_edit | git apply -3
パッチを元に戻すには:
git diff 13.1_dev sale_edit | git apply -3 -R
(注:これは上記のコマンドと同じですが、パッチファイルを作成する2段階のプロセスはありません)
git help apply
-3, --3way
When the patch does not apply cleanly, fall back on 3-way merge if
the patch records the identity of blobs it is supposed to apply to,
and we have those blobs available locally, possibly leaving
the conflict markers in the files in the working tree for the user
to resolve...
ここでは、diffを使用しているブランチで試してみる必要があります。
git diff 13.1_dev sale_edit > patch.diff yourBranch()
Gitバージョン1.9.1では、「git apply」を使用して「git diff」を使用して作成されたパッチを適用すると、同様の苦情が表示されます。
パッチファイル内のスペースとタブが混在している場合、1.9.1 gitで問題が発生しているようです。
warning: squelched 1 whitespace error warning: 6 lines add whitespace errors.
@VonCの答えは役に立たず、私はまだ同じ警告を受け取っています。
最も簡単な解決策は、単に 'patch'コマンドを使用することです。このコマンドは、 'git diff'出力でキャプチャされたすべての変更をターゲットgitディレクトリに正常に適用します。
$ patch --version GNU patch 2.7.1