繁体   English   中英

git am从分支到主

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM