linux中diff命令的使用详解

diff命令是版本管理工具的基础,本文主要讲解diff比较几种方式和git diff使用技巧。
如下两个文件,file1和file2

$ cat file1
aa
aa
aa
aa
aa
$ cat file2
aa
aa
bb
aa
aa

1.普通格式diff file1 file2
$ diff file1 file2
3c3
< aa
---
> bb

说明:3c3表示file1的第3行有变化(change),变动为file2的第3行;<表示从file1当中去除该行;---分割file1和file2;>表示file2增加了该行
2.上下文格式diff -c file1 file2
$ diff -c file1 file2
*** file1 2016-04-04 15:56:25.203923276 +0800
--- file2 2016-04-04 15:56:47.647138613 +0800
***************
*** 1,5 ****
  aa
  aa
! aa
  aa
  aa
--- 1,5 ----
  aa
  aa
! bb
  aa
  aa

说明:
(1)前两行表示比较文件的基本信息文件名和时间等。"***"表示变动前的文件,"---"表示变动后的文件。
*** file1 2016-04-04 15:56:25.203923276 +0800
--- file2 2016-04-04 15:56:47.647138613 +0800

(2)***************表示将基本信息和变动信息分割开
(3)*** 1,5 ****表示从第1行开始,联系5行
(4)如果是感叹号(!),表示该行有改动;如果是减号(-),表示该行被删除;如果是加号(+),表示该行为新增。
3.合并模式diff -u file1 file2
为了解决大量内容重复显示而引入,git就是使用衍生的合并模式
$ diff -u file1 file2
--- file1 2016-04-04 15:56:25.203923276 +0800
+++ file2 2016-04-04 15:56:47.647138613 +0800
@@ -1,5 +1,5 @@
 aa
 aa
-aa
+bb
 aa
 aa

说明:
(1)表示文件基本信息,"---"表示变动前的文件,"+++"表示变动后的文件。
--- file1 2016-04-04 15:56:25.203923276 +0800
+++ file2 2016-04-04 15:56:47.647138613 +0800

(2) 变动位置首末用两个@表示,"-1,5"表示第一个文件从第1行开始的连续5行,"+1,5"表示第二个文件从第1行开始的连续5行
@@ -1,5 +1,5 @@

(3)变动具体内容,减号表示第一个文件删除的行,加号表示第二个文件新增的.
看看版本管理工具git diff效果:
diff --git a/file1 b/file1
index a57a69a..863575a 100644
--- a/file1
+++ b/file1
@@ -1,5 +1,5 @@
 aa
 aa
-aa
+bb
 aa
 aa

git diff常用比较方法
git diff #工作区和暂存区比较
git diff master #工作区和master分支比较
git diff HEAD #工作区和HEAD比较

时间: 2024-07-29 01:38:52

linux中diff命令的使用详解的相关文章

linux中route命令的使用详解

route命令用于显示和操作IP路由表.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现.在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由. 作用 route命令用于查看和配置linux内核路由表,也就是用来查看和配置linux的静态路由表. 描述 route命令操作基于linux内核路由表,它的主要

Linux中cron命令的用法详解

  linux中有一个命令可以定期来执行系统任务.这就是crond服务.下面介绍下crontab命令的用法. linux任务调度的工作主要分为以下两类: 编辑/etc/crontab 文件配置cron cron服务每分钟不仅要读一次 /var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情.用 crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务.此文件的文件格式是: 1.系统执行的工作:系

Linux 中RPM命令参数使用详解

  此工具包最先是由Red Hat公司推出的,后来被其他Linux开发商所借用.由于它为Linux使用者省去了很多时间,所以被广泛应用于在Linux下安装.删除软件.下面就给大家介绍一下它的具体使用方法. 1.我们得到一个新软件,在安装之前,一般都要先查看一下这个软件包里有什么内容,假设这个文件是:Linux-1.4-6.i368.rpm,我们可以用这条命令查看: rpm -qpi Linux-1.4-6.i368.rpm 系统将会列出这个软件包的详细资料,包括含有多少个文件.各文件名称.文件大

Linux中rpm命令参数使用详解

rpm 执行安装包 二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. 还不清楚具体有啥用,只知道可以检查一个软件是否安装.比如: rpm -qa |grep rsync -i, --install                     install package(s) -v, --verbose                     provide more detai

linux中ln 命令使用参数详解

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间.例如:ln –s /bin/less /usr/local/bin/less -s 是代号(symbolic)的意思.

linux中scp命令使用技巧详解(传输速度)

scp 命令   scp 可以在 2个 linux 主机间复制文件: 命令基本格式:        scp [可选参数] file_source file_target ====== 从 本地 复制到 远程 ====== * 复制文件:         * 命令格式:                 scp local_file remote_username@remote_ip:remote_folder                 或者                 scp local

linux中mv命令的用法详解

1.作用 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. 2.格式 mv [options] 源文件或目录 目标文件或目录 3.[options]主要参数 -i:交互方式操作.如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答"y"或"n",这样可以避免误覆盖文件. -f:禁止交互操作.mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后

Linux下nl命令的用法详解

Linux中nl命令和cat命令很像,不过nl命令会打上行号,属于比较不常用的命令,下面随小编一起来了解下这个鲜为人知的nl命令吧. nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能. 1.命令格式: nl [选项]... [文件]... 2.命令参数: -b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出

【Linux基础】 diff命令的参数详解和实例

diff命令参数: diff - 找出两个文件的不同点 总览 diff [选项] 源文件 目标文件 描述 在最简单的情况是, diff 比较两个文件的内容 (源文件 和 目标文件). 文件名可以是 - 由标准输入设备读入的文本. 作为特别的情况是, diff - - 比较一份标准输入的它自己的拷贝如果 源文件 是一个目录和 目标文件 不是(目录), diff 会比较在 源文件(目录) 里的文件的中和 目标文件同名的(文件), 反过来也一样. 非目录文件不能是 -. 如果 源文件 和 目标文件 都