Linux diff

git diff

  • 格式
    • git diff commitA commitB
      • 可以是commit的hash值
      • 也可使HEAD,HEAD~3等
    • git diff branch1 branch2
      • 比较不同分支差异
    • git diff fileName
      • 比较暂存区和工作区
      • 只有通过 git add 跟踪过的文件才能用git diff
    • git diff --cached
      • 比较暂存区和版本库差异
    • git diff HEAD
      • 比较以被跟踪的工作区和版本库的差异
  • 输出解析
    • 每一个变更文件作为一个段落,以 “diff --git a/file b/file” 开头,表示 a 版本的 file 文件和 b 版本的 file 文件进行比对。
    • 每一个变更文件(如果涉及到内容的修改)可以有一个或多个的变更段落,每个变更段落以 “@@ -beginline,totalline +beginline,totalline @@” 开头。其中 beginline 表示修改开始于第几行,totalline 表示这一段修改涉及的总行数。“-”表示 a 版本,“+”表示 b 版本。变更段落中绿色且以“+”开始的表示新增的内容,红色且以“-”开始的表示删除的内容。
  • 生成补丁
    • 格式
      • git diff commitA [commitB] > patchName
      • 如果commitB是当前分支的最后一次commit,可以省略
    • 参数
      • -o path
        • 输出到指定文件夹
        • 默认为当前仓库目录
    • 输出文件名
      • 输出的每一个补丁文件都以序号开头,从 1 开始,再使用了 commit message的第一行(如果 commit message 太长的话)作为文件名,后缀是 .patch
  • 应用补丁
    • 检查补丁文件涉及的修改
      • git apply —stat patchName
    • 查看补丁是否能够应用成功
      • git apply —check patchName
    • 应用补丁
      • git apply patchName
      • git apply —reject patchName
        • 把不冲突的补丁先打上,有冲突的生成.rej文件

diff

  • 格式

    • diff [options] old new
      • File1 File2
        • 比较两个文本文件
      • Dir1 Dir2
        • 比较目录下的同名文本文件
        • 以及列出只在其中一个目录中出现的文件名
      • File Dir
        • 比较目录中的同名文件
  • 参数

    • 不加参数仅显示修改部分
    • -r 递归处理目录
    • -N 将缺失文件当空白文件
    • -y 并排显示新老文件
      • 不可与-u同用
    • -u 修改部分用±表示,否则为共有部分
    • -q 仅判断文件是否不同
    • -w 忽略空白符
  • 输出

    • 不加参数的输出格式
      • 数字[a/c/d]数字
      • 数字表示文件变动的行数
        • 3表示第三行
        • 3,6表示3到6行
      • a表示文件2比文件1增加
      • c表示该行内容变动
      • d表示文件2比文件1删除
    • -y并排输出格式
      • "|"表示前后2个文件内容有不同
      • "<"表示后面文件比前面文件少了1行内容
      • ">"表示后面文件比前面文件多了1行内容

patch

  • 格式
    • patch [option] originfile -i patchfile
    • 用patchfile给originfile打补丁
  • 参数
    • -i 指定补丁文件
    • -o 输出到指定文件而不是直接覆盖originfile
    • -R 撤销补丁
  • 生成patch
    • diff -u oldFile newFile > patchFile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值