Git 生成技巧及流程
创建日期:2015-08-04 17:56:38

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