理解git diff的前提,首先要理解git中工作区,暂存区,本地版本库的概念,如果头脑中有这些概念,接着往下读。

git diff test.c 用来查看工作区和暂存区中test.c文件的区别。

git diff HEAD -- test.c 用来查看工作区和本地版本库中test.c文件的区别。

eg:

a. 在工作区中修改文件cfm_test.c,git diff cfm_test.c 和 git diff HEAD --  cfm_test.c 分别输出如下:

[3me]$ git diff cfm_test.c
@@ -45,7 +45,11 @@ cfm_test_init ()
tst->tst_data = XCALLOC (MTYPE_ITUT_CFM_MSG, CFM_TST_PDU_MAX_LENGTH);
if (!tst->tst_data)
{
- XFREE (MTYPE_ITUT_CFM_MSG, tst->tst_data);
+#if defined(CONFIG_DS_COVERITY)
+ XFREE( MTYPE_ITUT_CFM_TST, tst);
+#else
+ XFREE (MTYPE_ITUT_CFM_MSG, tst->tst_data);
+#endif
return NULL;
} [3me]$ git diff HEAD -- cfm_test.c
@@ -45,7 +45,11 @@ cfm_test_init ()
tst->tst_data = XCALLOC (MTYPE_ITUT_CFM_MSG, CFM_TST_PDU_MAX_LENGTH);
if (!tst->tst_data)
{
- XFREE (MTYPE_ITUT_CFM_MSG, tst->tst_data);
+#if defined(CONFIG_DS_COVERITY)
+ XFREE( MTYPE_ITUT_CFM_TST, tst);
+#else
+ XFREE (MTYPE_ITUT_CFM_MSG, tst->tst_data);
+#endif
return NULL;
}

b. 执行git add cfm_test.c,将文件提交到暂存区,输出如下:

[3me]$ git add cfm_test.c
[3me]$ git diff cfm_test.c
[3me]$ git diff HEAD -- cfm_test.c
@@ -, +, @@ cfm_test_init ()
tst->tst_data = XCALLOC (MTYPE_ITUT_CFM_MSG, CFM_TST_PDU_MAX_LENGTH);
if (!tst->tst_data)
{
- XFREE (MTYPE_ITUT_CFM_MSG, tst->tst_data);
+#if defined(CONFIG_DS_COVERITY)
+ XFREE( MTYPE_ITUT_CFM_TST, tst);
+#else
+ XFREE (MTYPE_ITUT_CFM_MSG, tst->tst_data);
+#endif
return NULL;
}

分析:由于已经将文件提交到暂存区,所以工作区和暂存区中文件无区别,所以 git diff cfm_test.c 无输出内容;由于未提交到本地版本库,工作区和本地版本库文件有区别,所以 git diff HEAD -- cfm_test.c 输出diff内容。

c. 接着执行git commit 将文件提交到本地版本库,输出如下:

[3me]$ git commit -m "for source code coverity check."
[master 444ebb0f84] for source code coverity check.
file changed, insertions(+), deletion(-)
[3me]$ git diff cfm_test.c
error: cannot run most: No such file or directory
[3me]$ git diff HEAD -- cfm_test.c
error: cannot run most: No such file or directory

分析:执行 commit 将文件提交到本地版本库, 因此工作区,暂存区,本地库三者之间的内容是一致的,因此git diff 和git diff HEAD 输出均无内容。

git diff 命令用法的更多相关文章

  1. 『现学现忘』Git基础 — 21、git diff命令

    目录 1.git diff 命令说明 2.比较工作区与暂存区中文件的差别 3.比较暂存区与本地库中文件的差别 4.总结git diff命令常见用法 5.总结 1.git diff 命令说明 在comm ...

  2. diff 命令用法--如何打补丁【原创--学习笔记】

    diff 命令用法 1.”-u”:表示在比较结果中输出上下文中一些相同的行,这有利于人工定位 2.“-r“:表示递归比较各个子目录下的文件 3.“-N“:将不存在的文件当作空文件 4.“-w“:忽略对 ...

  3. emacs 中使用git diff命令行

    在shell中执行git diff命令,常常会看到例如以下警告信息: terminal is not fully functional 事实上非常easy,配置一下就可以. git config -- ...

  4. git diff的用法

    在git提交环节,存在三大部分:working tree(工作区), index file(暂存区:stage), commit(分支:master) working tree:就是你所工作在的目录, ...

  5. linux中diff命令用法

    diff 命 令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版 本的diff还支持二进制文件.diff程 ...

  6. Git:git diff 命令详解

    工作目录 vs 暂存区 $ git diff <filename> 意义:查看文件在工作目录与暂存区的差别.如果还没 add 进暂存区,则查看文件自身修改前后的差别.也可查看和另一分支的区 ...

  7. git diff命令详解

    1 如下命令: [devel@localhost pontus]$ git diff webserver/web_pontus/app_api/v0/urls.py# 显示如下: diff --git ...

  8. Linux下diff命令用法详解

    大家好,我是良许. 我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点.在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也 ...

  9. Git diff 常见用法

      Git diff 用于比较两次修改的差异 1.1 比较工作区与暂存区 git diff  比较的是单个仓库的工作区与暂存区的差别,repo diff是对git diff的封装,用来分别显示各个项目 ...

随机推荐

  1. Confluence 6 多媒体文件和在页面中显示文件列表

    多媒体文件 文件的预览同时也支持 MP3 音频和 MP4 视频文件.Confluence 使用 HTML 5 来播放附加的音频和视频文件.这个意味着这些文件类型的文件格式,用户可以在支持的浏览器中直接 ...

  2. Python 标准库、第三方库

    Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...

  3. Mysql 执行安装脚本报错Changed limits:

    安装Mysql软件的时候报错,如下: [root@db bin]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/u01/app/m ...

  4. 分布式-信息方式-ActiveMQ支持的传输协议和配置

                             ActiveMQ支持的传输协议和配置■ Connector: ActiveMQ提供的,用来实现连接通讯的功能.包括: client-to-broker ...

  5. Golang Singleton

    package example import ( "fmt" "sync") var m *singletonvar once sync.Once func G ...

  6. js对象深拷贝、浅拷贝

    浅拷贝1 //浅拷贝1 let obj01 = { name: 'Lily', age: '20', time: ['13', '15'], person: { name: 'Henry', age: ...

  7. Adding property to a json object in C#

    Adding property to a json object in C#   you can do it with a dynamic object dynamic obj = JsonConve ...

  8. Oracle Rac 测试

      #还是使用之前的脚步来进行测试 #Author : Kconnie Pong Oracle@PONGDB:~> more load_balance.sh #!/bin/bash ..} do ...

  9. 查询Oracle表空间使用情况

    ,),'990.99')||'%' "使用比(%)",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)" ...

  10. PHP CI 框架简单使用(二)

    我们简单认识一下CI框架的MVC.示例代码如下 //CI控制器文件Home.php <?php defined('BASEPATH') OR exit('No direct script acc ...