git打补丁的两种方式及patch后面加的选型的含义
打补丁及恢复
如果应用了某一个补丁之后想恢复原来的文件,那么使用参数 -R,例如:
首先打了一个补丁
patch -p1 < my.patch
然后想恢复原来的文件,那么
patch -R -p1 < my.patch
为多个文件制作补丁
使用git
来快速生成,因为git
是一个局部目录的库,所以不会有多余开销。
创建git
cd src git init
添加需要制作补丁的文件,或者全部添加
git add *
或者
git add *.c
提交原始文件
git commit -a -m'init'
修改源文件
......
创建补丁
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
Git如何获得两个版本间所有变更的文件列表
显示两个版本之间文件显示文件列表
hash
git diff <hash1> <hash2> --stat
branch
git diff <branch1> <branch2> --stat
生成补丁文件
git diff <hash1> <hash2> --no-prefix > 201508041717.patch