如何在没有安装Git的情况下应用`git diff`补丁?

时间:2010-08-05 19:10:36

标签: git diff patch

如果没有安装git,我的客户端如何应用由git diff创建的补丁? 我曾尝试使用patch命令,但它始终要求文件名进行修补。

5 个答案:

答案 0 :(得分:412)

git diff > patchfile

patch -p1 < patchfile

工作但是很多人在评论和其他答案中注意到补丁不理解添加,删除和重命名。如果您需要处理文件添加,删除和重命名,则除了git apply patchfile之外没有其他选项。


编辑 2015年12月

最新版本的patch命令(2.7,2012年9月发布)支持“diff --git”格式的大多数功能,包括重命名和副本,权限更改和符号链接差异(但还没有二进制差异)(release announcement)。

因此,如果使用当前/最新版本的patch,则无需使用git将其差异应用为补丁。

答案 1 :(得分:73)

试试这个:

patch -p1 < patchfile

答案 2 :(得分:49)

使用

git apply patchfile

如果可能的话。

patch -p1 < patchfile 

有潜在的副作用。

git apply还会处理文件添加,删除和重命名,如果它们以git diff格式描述,patch将不会这样做。最后,git apply是一个“全部应用或全部中止”的模型,其中应用了所有内容或者没有任何内容,而补丁可以部分应用补丁文件,使您的工作目录处于奇怪的状态。

答案 3 :(得分:6)

我用

patch -p1 --merge < patchfile

这样,冲突可以照常解决。

答案 4 :(得分:-12)

试试这个:

$ git apply file.diff