[英]git am from branch to master
我正在与我的git大学合作。 我在分支机构工作,而他在主管工作。 我已经完成了与他的分支上的文件有关的一些工作,因此决定将补丁文件发送给他。 我使用git format-patch
创建了补丁,并将其发送给他。 当他尝试使用git am
应用补丁git am
,会收到以下消息: previous release directory
可能是因为补丁来自其他分支。
他有办法在master分支上使用补丁吗?
注意:我使用的是git am
,而不是git apply
来保留为码头生成的commit-id。 我仍然希望提交者在我的本地存储库中成为我。
在处理无法正确应用的补丁时,请考虑使用以下两种解决方案之一:
(来自bugdromer的文章):
处理它的最简单方法是:
git am --abort
,- 通过
patch -p1 < PATCH
手动应用补丁- 手工解决冲突,
- 最后使用
git commit -a
。但是在这种情况下,您将不得不重写提交消息,这不是很好。 还有一种更聪明的方法。
您可以在
.git/rebase-apply
找到相应的修补程序文件,并将其命名为“0001
”(存储修补程序的目录名称最近已更改,已使用1.7.4.1进行了测试)。
这一点:
- 您可以使用
git apply
来应用补丁,这与patch命令的git等价 ,- 并以通常的方式修复冲突的文件(您检查
.rej
文件,将它们与冲突的文件进行比较,最后将已修复的文件添加到索引中):例:
$ git apply PATCH --reject
$ edit edit edit
$ git add FIXED_FILES
$ git am --resolved
完成了!
换句话说,由于git am
并没有更改索引,因此您需要
git apply --reject
补丁(存储在.git/rebase-apply
),- 手动解决冲突,
- 添加更改的文件并
- 最后告诉git您解决了麻烦。
在这种情况下的优点是:
- 您不需要重新编辑提交消息,
- 并且如果您要应用一组补丁程序(即您正在使用
git am PATCHES
,其中PATCHES
是邮箱),则不必git abort
并再次run git am
。
尝试git am
的--3way
选项:
-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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.