`
wbj0110
  • 浏览: 1623251 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

git diff

    博客分类:
  • Git
git 
阅读更多

在git提交环节,存在三大部分:working tree, index file, commit

这三大部分中:
working tree:就是你所工作在的目录,每当你在代码中进行了修改,working tree的状态就改变了。
index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,index file的内容就改变了,此时index file就和working tree同步了。
commit:是最后的阶段,只有commit了,我们的代码才真正进入了git仓库。我们使用git-commit就是将index file里的内容提交到commit中。
总结一下:
git diff:是查看working tree与index file的差别的。
git diff --cached:是查看index file与commit的差别的。
git diff HEAD:是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息)

为了更加清晰的阐释这个关系,来给出一个实例。

[yaya@yaya-desktop]$ cat main.c
#include<stdio.h>
int main(int argc,char *argv[])
{
printf(“hello.\n”);
printf(“he was a student.\n”);
return 0;
}


然后git init, git add . , git commit;
之后你将源代码修改为:

[yaya@yaya-desktop]$ cat main.c
#include<stdio.h>
int main(int argc,char *argv[])
{
printf(“hello.\n”);
printf(“he was a student.\n”);
printf(“he was born in finland.\n”);
return 0;
}


此时你git add .,但不用执行git commit命令。然后你再将源代码改为:

[yaya@yaya-desktop]$ cat main.c

#include<stdio.h>

int main(int argc,char *argv[])

{

printf(“hello.\n”);

printf(“he was a student.\n”);

printf(“he was born in finland.\n”);

printf(“he is very clever!\n”);

return 0;

}

这个时候,你执行如下三个命令,仔细查看,我相信你会发现它们三个的区别的!
$ git diff
$ git diff –cached
$ git diff HEAD
讲到这里,基本上对git diff命令有了比较深入的了解了,现在你再使用git status看看输出结果,样子大概是这样:

[yaya@yaya-desktop]$ git status
# On branch master
# Changes to be committed:
#   (use “git reset HEAD <file>…” to unstage)
#
#    modified:   main.c
#
# Changed but not updated:
#   (use “git add <file>…” to update what will be committed)
#
#    modified:   main.c
#很明显可以知道:
Changes to be committed表示已经存在于index file里,但尚未提交。
Changed but not updated表示在working tree已经做修改,但还没有使用git add登记到index file里。

 

diff的命令输出格式注意:

---代表源文件
+++代表目标文件通常working area的文件都是被当作目标文件来看待。

-开头的行,是只出现在源文件中的行
+开头的行,是只出现在目标文件中的行
空格开头的行,是源文件和目标文件中都出现的行

差异按照差异小结进行组织,每个差异小结的第一行都是定位语句,由@@开头,@@结尾。

  1. chenshu@chenshu-yangzhou-home:/kaimei/data_service/src$ git diff 0c5ee16a6a4c849d0ae0448caa8ff174399c7c3c ./socket_helper.cpp  
  2. diff --git a/data_service/src/socket_helper.cpp b/data_service/src/socket_helper.cpp  
  3. index d606452..047e213 100755  
  4. --- a/data_service/src/socket_helper.cpp  
  5. +++ b/data_service/src/socket_helper.cpp  
  6. @@ -4,6 +4,7 @@  
  7.  #include "data/login_response.h"  
  8.  #include "data/heartbeat_response.h"  
  9.  #include "helper/parser.h"  
  10. +#include "helper/time_measure.h"  
  11.  #include <booster/log.h>  
  12.  #include "exception/socket_error.h"  
  13.  #include "exception/data_error.h"  


 
上面的diff结果表明
1.某个提交记录0c5ee代表的socket_helper.cpp文件是源文件,当前working area的socket_helper文件是目标文件。
2.在源文件第4行开始的6行和目标文件第4行开始的7行构成一个差异小结
3.这个差异小结中,目标文件添加了一行#include "helper/time_measure.h"
4.其他空格开头的行表明没有差异。

 

分享到:
评论

相关推荐

    Android修改源码让APP获取root权限可以执行su命令的git diff记录

    修改源码让APP获取root权限可以执行su命令的git diff记录

    Python-Samesame是一个gitdiff高亮显示比如Git的contribdiffhighlight和diffsofancy

    标题中的"Python-Samesame"是一个基于Python的项目,它为git diff提供了高亮显示功能。这个工具旨在增强用户在查看Git版本控制系统中差异时的视觉体验,类似于Git的"contrib/diff-highlight"和"diff-so-fancy"这两个...

    一个web实现的非常简易的类似git diff的页面

    标题中的“一个web实现的非常简易的类似git diff的页面”指的是一个基于Web技术构建的简单版Git差异对比工具。Git diff是Git版本控制系统中的一项功能,用于比较工作目录或暂存区与仓库中文件的不同之处。这个网页版...

    易语言源码转文本,可用于 git diff.zip

    易语言源码转文本,可用于 git diff经济将易语言源码转为文本,可用于 git diff。构成EProjectFile C#,反编译后魔改过来econv程序主体,IronPython,用python主要是由方便的表格库,IronPython方便调用...

    GitDiffMargin:Git Diff Margin在Visual Studio页边距和滚动条上显示当前编辑文件的实时Git更改。 通过Visual Studio 2019支持Visual Studio 2012

    Git Diff保证金 Git Diff Margin在Visual Studio页边距和滚动条上显示当前编辑文件的实时Git更改。产品特点通过Visual Studio 2019支持Visual Studio 2012 快速查看所有当前文件更改左边距在地图和条形码模式下滚动...

    webdiff:基于Web的两列git difftool

    基于Web的两列git difftool。 功能包括: 并排(两列)差异视图 在您选择的浏览器中的任何平台上运行。 通过Highlight.js突出显示语法 在单个差异中来回浏览多个文件 丰富的图像差异支持 安装 pip install ...

    karma-git-diff:将 git diff 列表导出到 JavaScript 测试的 Karma 插件

    karma-git-diff 一个 Karma 插件,用于将 git diff 列表导出到 JavaScript 测试。...在 Karma 中的 Javascript 中,现在将有一个window.__gitdiff__ ,它是一个已更改的文件数组。 &gt; console.log(windo

    Xcode插件GitDiff.zip

    GitDiff 显示 git 仓库和 XCode 源代码编辑器保存的代码文件的不同之处,复制仓库的内容到你的机器上,构建和重启 XCode。修改过的地方会用橙色标记,蓝色代表新加入的代码。删除的代码使用红色标记。 ...

    git_diff_parser:Crystal中的Git Diff解析器

    Git Diff解析器是用于处理和理解Git diff输出的工具,它是版本控制系统Git的重要组成部分。在Crystal编程语言中,`git_diff_parser`库提供了一个简洁、高效的API,使得开发者能够轻松地解析Git diff输出,获取文件的...

    showlinenum:showlinenum.awk - 显示 git diff 的行号

    showlinenum.awk - 显示 git diff 的行号 这个 gawk 脚本改变了 git diff 的输出以在每一行前面加上行号。 用法 git diff [options] | showlinenum.awk [options] showlinenum 的所有选项都需要一个值,并使用格式...

    git_diff:从 'git diff' 获取输出并将其转换为 Elixir 结构的简单实现

    GitDiff 从 'git diff' 获取输出并将其转换为 Elixir 结构的简单实现。文献资料API 文档可在安装该软件包可以通过添加安装git_diff你在依赖列表mix.exs : def deps do [ { :git_diff , " ~&gt; 0.6.3 " } ]end例子输出...

    diffview-git:一个简单的`git diff`到html转换器

    一个简单的git diff到html转换器 该项目旨在作为CLI应用程序运行。 我将提供一个Dockerfile以使用构建您自己的。 另外,我将提供另一个shellscript,该脚本将创建一个具有运行中的Web服务器的容器。 这样,您可以...

    GitDiff:突出显示Xcode中针对git repo的增量

    GitDiff9-Xcode 9的GitDiff 由于此插件已被“ Sherlocked”,因此不再受支持,仅在Xcode 11中有效。您需要先保存文件,然后才能突出显示高光。 现在,源代码编辑器已在Swift中实现,“ GitDiff” Xcode插件已连接...

    react-diff-view:git diff组件

    React差异视图一个git diff组件,用于消耗git统一diff输出。概述拆分视图统一检视优化选择功能齐全一个干净而小巧的核心,可以显示差异。 支持拆分(并排)视图和统一(一列)视图。 可容忍的性能。 灵活的装饰组件...

    Git Excel Diff 插件

    Git的一个插件比较Excel的差异,A free and open-source local Git extension

    diff2html-cli-漂亮的git diff到HTML生成器-Node.js开发

    diff2html-cli-漂亮的git diff到HTML生成器diff2html-cli的diff到html从终端中的统一和git diff输出生成漂亮HTML diff目录功能在线示例发行版设置用法退出状态代码自定义HTML包装器模板示例贡献开发许可证谢谢功能...

    gd:更好的`git diff`

    【GD:改进版的“git diff”】 GD 是一个基于 Shell 的工具,旨在提供一个更加友好、色彩丰富且直观的 `git diff` 输出界面,替代了默认在 less 命令中查看差异的方式。它通过增强可视性,帮助开发者更轻松地识别...

    git-difftool:围绕“git diff”的 Python 包装器,方便查看更改

    git-difftool 围绕“git diff”的 Python 包装器,方便查看更改 执照 在 Boost 软件许可下分发,版本 1.0。 (请参阅随附文件 LICENSE_1_0.txt 或复制到 ) 兼容性 需要 Git 1.7.2 或更高版本。 我在 cygwin 和 ...

    diff2html-cli-PrettygitdifftoHTMLgenerator

    Git提供了一种查看代码差异(diff)的方法,帮助开发者理解代码的变更历史。然而,原始的Git diff输出可能不太适合阅读,尤其是在处理大量或复杂改动时。这就是diff2html-cli的用武之地,它是一款基于Node.js的...

    git-diff-export

    git 没有提供导出变化文件的功能。 实现类似 svn export的功能,导出有变化的文件。(bash shell)

Global site tag (gtag.js) - Google Analytics