分类: LINUX
2014-07-23 16:15:07
commit提交后,用git diff SHA-1 SHA-2 > my.patch,之后用patch -p1 < my.patch
即可将版本库上两次提交之间的不同之处做成一个patch,然后通过打补丁的方式提交到版本库上。
如果应用了某一个补丁之后想恢复原来的文件,那么使用参数 -R,例如:
1. 首先打了一个补丁
$ patch -p1 < my.patch
2 然后想恢复原来的文件,那么
$ patch -R -p1 < my.patch
如果要为多个文件制作补丁,那么可以使用 git 来快速生成,因为 git 是一个局部目录的库,所以不会有多余开销。
1.创建 git
$ cd src
$ git init
2.添加需要制作补丁的文件,或者全部添加
$ git add *
或者
$ git add *.c
3. 提交原始文件
$ git commit -a -m'init'
4. 修改源文件
。。。
5. 创建补丁
$ git diff > my.patch
这样创建的补丁文件目录会自动增加一个前缀 a/ b/,例如
diff --git a/Makefile.in b/Makefile.in
index e548e99..c019753 100644
--- a/Makefile.in
+++ b/Makefile.in
这时候应用补丁的时候需要到包的根目录,使用 -p1 选项
$ patch -p1 < my.patch
如果不想在文件名前面增加前缀,那么使用选项 --no-prefix
$ git diff --no-prefix > my.patch
生成的补丁头如下,没有了文件目录的前缀
diff --git Makefile.in Makefile.in
index e548e99..c019753 100644
--- Makefile.in
+++ Makefile.in
用这个打补丁的时候就需要使用 -p0 选项
$ patch -p0 < my.patch
转载自:http://zhaojunde1976.blog.163.com/blog/static/1219986682012112011253540/