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

我的客户端如何在没有安装git diff情况下应用由git diff创build的补丁? 我试图使用patch命令,但它总是要求文件名补丁。

 git diff > patchfile 

 patch -p1 < patchfile 

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


编辑 2015年12月

最新版本的patch命令(2.7,2012年9月发布) 支持“diff -git”格式的大部分function,包括重命名和复制,权限更改和符号链接差异 (但还没有二进制差异)( 发布公告 )。

因此,如果提供了一个使用当前/最新版本的patch ,则不需要使用git来将其差异作为补丁应用。

尝试这个:

 patch -p1 < patchfile 

使用

 git apply patchfile 

如果可能的话。

 patch -p1 < patchfile 

有潜在的副作用。

git apply也处理文件增加,删除和重命名,如果他们在git diff格式描述,哪个patch不会做。 最后, git apply是一个“应用全部或全部中止”的模型,其中一切都应用或者什么都不是,而补丁可以部分应用补丁文件,使工作目录处于奇怪的状态。

我用

 patch -p1 --merge < patchfile 

这样冲突就可以照常解决了。

尝试这个:

 $ git apply file.diff