我有一个浅克隆,我在上面做了三个提交。这是日志:
$ 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 added from浅
* 3b3ed39 删除了电子邮件
* cfbed6c 进一步修改
* a71254b 添加到版本 2.1
* 7347896(嫁接)版本 2 更改
现在我从这里创建一个补丁:
$ git format-patch -k --stdout origin > ../format_since_origin.patch
我想在另一个克隆中应用这个补丁,这是一个完整的克隆。
这是日志:
$ git log --oneline --graph --decorate --all
* 8a1ce1e (HEAD, origin/master, master) from full clone
* 7c13416 added from shallow
* 3b3ed39 removed email
* cfbed6c 进一步修改
* a71254b 添加到 release 2.1
* 7347896版本 2
的更改 * b1a8797 对 ttwo 文件的更改
* 603710c 更改了测试报告
* 16b20b3 添加了 test_report.txt
* f0871ea 修改了 file1.xml
* dd94bfc 添加了 file1.xml
* 00758aa 第二次提交
* 49f9968 第一次提交
我无法应用从上面的浅克隆创建的补丁。我收到以下错误。
$ git am -3 /c/temp/git/format_since_origin.patch
应用:补丁 1
使用索引信息重建基础树...
错误:补丁失败:file1.c:6
错误:file1.c:补丁不适用
你手动编辑你的补丁吗?
它不适用于记录在其索引中的 blob。
不能回退到三向合并。
补丁在 0001 补丁 1 失败
当你解决了这个问题后,运行“git am --resolved”。
如果您希望跳过此补丁,请运行“git am --skip”。
要恢复原始分支并停止修补运行“git am --abort”。
知道为什么这个补丁失败了吗?还是我的方法完全错误?
更新:
它适用于以下
$ git am -3 --ignore-whitespace /c/temp/git/format_since_origin.patch 应用:补丁 1 应用:补丁 2 应用:补丁 3
现在,正如查尔斯所建议的那样 - 如果我尝试 git diff,我会收到如下错误。
$ git diff -p 起源 > ../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:尾随空格。
patch 这个报告
错误:patch failed:file1.c:6
error:file1.c:patch does not apply
error:patch failed:file1.xml:2
error:file1.xml:patch does not apply
error:patch failed:tr/ test_report.txt:2
错误:tr/test_report.txt:补丁不适用