48

やってみた

git diff 13.1_dev sale_edit > patch.diff

それから別のブランチでやってみgit apply patch.diffましたが、パッチが適用されません。git apply で使用できる差分からパッチ ファイルを作成するにはどうすればよいですか?

受信したエラー:

$ 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でこれを試しています

4

4 に答える 4

33

次を試してください。

git apply --ignore-space-change --ignore-whitespace patch.diff

git: patch does not apply」で述べたように、これは次の原因で発生する可能性があります。

  • ローカル ファイル システムとリモート リポジトリの間で行末が異なります。ファイル内の
    ユーザーは良いアプローチです (「git force file encoding on commit」を参照)core.eol.gitattributes
  • 実行ビット (' x')。
    これにより、 setgit config core.filemode falseの後に a が続きgit reset --hard HEADます (コミットされていない変更がないことを確認してください。変更が失われる可能性があります)。
于 2013-04-14T00:07:26.230 に答える
18

パッチを 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...
于 2015-03-07T12:45:04.427 に答える
1

ここでは、差分のあるブランチで試してみる必要があります。

git diff 13.1_dev sale_edit > patch.diff yourBranch()
于 2013-06-07T09:07:26.583 に答える