如何应用git格式补丁生成的补丁?

如何应用git格式补丁生成的补丁?,git,patch,Git,Patch,我有两个本地git存储库,都指向同一个远程存储库 在一个git存储库中,如果我使用了git format patch 1,如何将该修补程序应用到另一个存储库中?或者,如果您是老生常谈者: git apply name-of-file.patch cd /path/to/other/repository patch -p1 < 0001-whatever.patch cd/path/to/other/repository 修补程序-p1

我有两个本地git存储库,都指向同一个远程存储库


在一个git存储库中,如果我使用了
git format patch 1
,如何将该修补程序应用到另一个存储库中?

或者,如果您是老生常谈者:

git apply name-of-file.patch
cd /path/to/other/repository
patch -p1 < 0001-whatever.patch
cd/path/to/other/repository
修补程序-p1<0001-1.patch

注意:您可以先预览修补程序的功能:

首先是统计数据:

git apply --stat a_file.patch
然后进行试运行以检测错误:

git apply --check a_file.patch
最后,您可以使用将修补程序作为提交应用。这还允许您创建应用的修补程序。
这可供以后参考

git am --signoff < a_file.patch 
git am--signoff
见:

在git日志中,您会发现提交消息包含一个“signedoffby”标记。Github和其他人将读取此标记,以提供有关提交如何在代码中结束的有用信息


如果您想将其作为提交应用,请使用。

如果您使用JetBrains IDE(如IntelliJ IDEA、Android Studio、PyCharm),您可以拖动修补程序文件并将其放入IDE中,然后会出现一个对话框,显示修补程序的内容。您现在需要做的就是单击“应用补丁”,然后将创建一个提交。

首先,您应该注意
git-am
git-Apply

当您使用
git-am
时,通常需要应用许多补丁。因此,应使用:

git am *.patch
或者只是:

git am
Git将自动查找修补程序并按顺序应用它们;-)

UPD

您可以找到如何生成此类补丁

这可能没有回答最初的详细问题,但它回答了标题中的问题,这就是我出现在本页的原因。非常感谢。我知道这是一个古老的问题和答案。。。但是我认为理解.git apply“[…文件的完整路径…]/文件名.patch”可能会对一些人有所帮助。首先,你通常如何获取mbox文件?或者只使用
git apply
@Sebi2020:
git apply
将更改作为补丁而不是提交应用,而
git-am
假定电子邮件的文本是提交消息(有些例外)并应用更改创建提交(它可以尝试通过与
git-am--3way
的三方合并来解决冲突。请注意:第200个伟大答案金牌。
git-am
产生“致命:空标识名”(for)not allowed“.有人能解释一下原因吗?@gromit190这意味着补丁中的
作者
标题不好,和/或你没有
git-config-user.{name,email}
。好的;
git-apply——检查
补丁不适用
git-apply-3
存储库缺少必要的blob来回退三方合并。
在git中,重定提交的基础非常容易;但是人们如何在更新的代码上重定补丁的基础呢?@ulidtko可能有?谢谢。这是r对每个人都很有用。有一个公认的答案。但这也很有用。@ambarox但这个答案有一次被否决了,我不知道为什么有人会认为应用补丁的唯一方法是通过命令行。:D我给了你一个向上的投票。干杯,伙计。@Lasitabenaragama-有点。这不仅是为了帮助OP,也是为了帮助所有跟随的人.这个答案(虽然有用)并没有提供一个通用的解决方案。这将是一篇优秀的小博文,但不是一篇“那么好”回答。这将解释否决票的原因!请注意:这不会创建提交,因此会丢失提交消息和作者信息。我曾经遇到过这样的情况,
git-apply
doesn不起作用,如果您试图对git忽略的路径或文件应用修补程序,而您的git格式为这个对差异的解释帮助我使用了
git apply
。在
--reverse
:-)