patch命令基于补丁文件进行升级

生成补丁文件

1
2
$ diff filename1 filename2 >  filename1.patch
$ git diff filename1 > filename1.patch

使用补丁文件升级

1
2
$ patch -p0 filename1 filename1.patch
$ patch -p0 < filename1.patch

取消升级,回退(rollback)到打补丁之前

1
$ patch -R < filename1.patch

关于-p参数与文件路径处理

由于patch文件的首行已经指明了路径,所以根据当前所在的目录,加不同的参数使用patch命令:

  • p指的是路径(path),后面的数字表示去掉路径的第几部分
  • 0,1,2,是指略去的patch文件中的前几级目录; p0表示不去掉,为全路径

如果当前的目录是和补丁文件的同级目录:

1
$ patch -p0 < /somepath/filename.patch

如果当前的目录是和补丁文件的次级目录:

1
$ patch -p1 < /somepath/filename.patch

如果当前的目录是和补丁文件的次级目录子目录:

1
$ patch -p2 < /somepath/filename.patch