git apply /tmp/patch-ruby-client.patch
git apply
用于应用别人发布的补丁到自己的仓库中,通常用于由 git diff
或者 Unix diff
产生的补丁。
相比于使用 patch
命令(Unix内置的补丁)来处理,git patch
能处理 git diff
所描述的文件添加、删除和重命名操作。
最后,git apply
命令采用了一种“全部应用,否则就全部撤销(apply all or abort all)”的模型, 即补丁只有全部内容都被应用和完全不被应用两个状态,而 patch
可能会导致补丁文件被部分应用, 最后使你的工作目录保持在一个比较奇怪的状态。 总体来看,git apply
命令要比 patch
谨慎得多。
并且,它不会为你创建提交——在运行之后,你需要手动暂存并提交补丁所引入的更改。
应用前检测输出
在实际应用补丁前,你还可以使用 git apply 来检查补丁是否可以顺利应用——即对补丁运行 git apply --check
命令:
$ git apply --check 0001-seeing-if-this-helps-the-gem.patch
error: patch failed: ticgit.gemspec:1
error: ticgit.gemspec: patch does not apply
如果没有产生输出,则该补丁可以顺利应用。 如果检查失败了,该命令还会以一个非零的状态退出,所以需要时你也可以在脚本中使用它。