diff and patch

diff的选项挺多,但这里只介绍最常用的三个,其他的,还是看man diff吧:
  • -r: 递归比较文件夹下的文件
  • -N: 如果某个比较的文件为不存在,则视为空文件
  • -u: unified,diff的结果进行格式化输出(可读性更好)


所以,diff的一般用法是: diff -Nur old_version new_version >> mods.diff

patch使用diff文件的输出,所以两者总是配对使用。但patch不仅可以支持diff产生的输出,也可使用svn/git等工具生成的diff。

patch的三个常用选项:
  • -p NUM: 产生的diff文件,包含diff时使用的to-file(上面的old_version)的path,path有层级,比如:/myproject/model/people/profile.py,但这个path不总是正确,因为diff文件的位置是可以移动的,比如,在/目录,按照path去打patch没有问题,但把diff文件保存在/myproject目录下,则找不到/myproject/model/people/profile.py这个路径了。这个-p属性就是用来去掉path中斜杠(/)的数量。默认情况下,path是profile.py。-p1:myproject/model/people/profile.py。-p2:model/people/profile.py。-p3: people/profile.py。-p4: profile.py。所以patch -p0 和patch是不一样的,注意了。
  • -R: 即--reverse,打过patch,如果想要取消,则加上此选项
  • -b: 给打patch的文件进行备份,比如要对profile.py文件打patch,打完之后发现会多一个hello.py.orig文件


patch的一般用法: patch  -pNUM < patchfile,NUM视具体情况而定。


你可能感兴趣的:(diff)