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

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


当前回答

首先,你应该注意git am和git apply之间的区别

当你使用git am时,你通常想要应用很多补丁。因此应该使用:

git am *.patch

或者是:

git am

Git会自动找到补丁并按顺序应用它们;-)

乌利希期刊指南 在这里您可以找到如何生成这样的补丁

其他回答

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

注意:你可以先预览你的补丁会做什么:

首先是统计数据:

git apply --stat a_file.patch

然后是检测错误的演练:

git apply --check a_file.patch

最后,你可以使用git am来应用你的补丁作为提交。这也允许你签署一个应用补丁。 这对以后的参考很有用。

git am --keep-cr --signoff < a_file.patch 

正如riverofwind在评论中指出的那样:

不要忘记,如果你在Windows开发中有selflf =false,你需要传递——keep-cr到am来保存这些crlf

请看本文中的一个例子:

在git日志中,您将发现提交消息包含“Signed-off-by”标记。这个标记将被Github和其他人读取,以提供关于提交如何在代码中结束的有用信息。

如果你想把它作为一个提交,使用git am。

或者,如果你想用老办法:

cd /path/to/other/repository
patch -p1 < 0001-whatever.patch

首先,你应该注意git am和git apply之间的区别

当你使用git am时,你通常想要应用很多补丁。因此应该使用:

git am *.patch

或者是:

git am

Git会自动找到补丁并按顺序应用它们;-)

乌利希期刊指南 在这里您可以找到如何生成这样的补丁