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