浅いクローンがあり、その上で3つのコミットを行いました。ログは次のとおりです。
$ git log --oneline --graph --decorate --all
* d3456fd(HEAD、master)patch 3
* 9713822 patch 2
* 6f380a6 patch 1
* 8a1ce1e(origin / master、origin / HEAD)from full clone
*7c13416追加元浅い
*3b3ed39削除された電子メール
*cfbed6cさらなる変更
*リリース2.1用に追加されたa71254b
*リリース2用の7347896(移植)変更
今、私はここからパッチを作成します:
$ git format-patch -k --stdout origin> ../format_since_origin.patch
このパッチを、完全なクローンである別のクローンに適用したいと思います。
ログは次のとおりです。
$ git log --oneline --graph --decorate --all
*フルクローンからの8a1ce1e(HEAD、origin / master、master)
*浅いところから追加された
7c13416*3b3ed39削除された電子メール
*cfbed6cさらなる変更
*リリース2.1用に追加された
a71254b*7347896リリース2の
変更*b1a8797ttwoファイル
の変更*603710cテストレポートの変更
*16b20b3追加test_report.txt
*f0871ea変更file1.xml
*dd94bfc追加file1.xml
*00758aa2番目のコミット
*49f9968最初のコミット
上記の浅いクローンから作成したパッチを適用できません。次のエラーが発生します。
$ git am -3 /c/temp/git/format_since_origin.patch
適用:パッチ1
インデックス情報を使用してベースツリーを再構築しています...
エラー:パッチが失敗しました:file1.c:6
エラー:file1.c:パッチが適用されません
パッチを手作業で編集しましたか?
インデックスに記録されたblobには適用されません。
スリーウェイマージにフォールバックすることはできません。
パッチは0001パッチ1で失敗しました
この問題を解決したら、「gitam--resolved」を実行します。
このパッチをスキップしたい場合は、代わりに「gitam--skip」を実行してください。
元のブランチを復元してパッチの適用を停止するには、「gitam--abort」を実行します。
このパッチが失敗する理由はありますか?それとも私の方法は完全に間違っていますか?
アップデート:
それは以下で動作します
$ git am -3 --ignore-whitespace /c/temp/git/format_since_origin.patch適用:パッチ1適用:パッチ2適用:パッチ3
チャールズが提案したように、git diffを試してみると、次のようなエラーが発生します。
$ git diff -p origin> ../dif_origin.patch
お申し込みの際、
$ git apply --ignore-whitespace --inaccurate-eof /c/temp/git/dif_origin.patch
c:/temp/git/dif_origin.patch:9:末尾の空白。
file1.cのパッチ変更
c:/temp/git/dif_origin.patch:18:末尾の空白。
このxmlガイにパッチを当てる
c:/temp/git/dif_origin.patch:29:末尾の空白。
fsdfsd
c:/temp/git/dif_origin.patch:30:末尾の空白。
このレポートにパッチを適用するエラー:パッチが失敗しまし
た:file1.c:6
エラー:file1.c:パッチが適用されません
エラー:パッチが失敗しました:file1.xml:2
エラー:file1.xml:パッチが適用されません
エラー:パッチが失敗しました:tr / test_report.txt:2
エラー:tr / test_report.txt:パッチが適用されません