在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的文件都是被当作目标文件来看待。
-开头的行,是只出现在源文件中的行
+开头的行,是只出现在目标文件中的行
空格开头的行,是源文件和目标文件中都出现的行
差异按照差异小结进行组织,每个差异小结的第一行都是定位语句,由@@开头,@@结尾。
- chenshu@chenshu-yangzhou-home:/kaimei/data_service/src$ git diff 0c5ee16a6a4c849d0ae0448caa8ff174399c7c3c ./socket_helper.cpp
- diff --git a/data_service/src/socket_helper.cpp b/data_service/src/socket_helper.cpp
- index d606452..047e213 100755
- --- a/data_service/src/socket_helper.cpp
- +++ b/data_service/src/socket_helper.cpp
- @@ -4,6 +4,7 @@
- #include "data/login_response.h"
- #include "data/heartbeat_response.h"
- #include "helper/parser.h"
- +#include "helper/time_measure.h"
- #include <booster/log.h>
- #include "exception/socket_error.h"
- #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.其他空格开头的行表明没有差异。
相关推荐
修改源码让APP获取root权限可以执行su命令的git diff记录
标题中的"Python-Samesame"是一个基于Python的项目,它为git diff提供了高亮显示功能。这个工具旨在增强用户在查看Git版本控制系统中差异时的视觉体验,类似于Git的"contrib/diff-highlight"和"diff-so-fancy"这两个...
标题中的“一个web实现的非常简易的类似git diff的页面”指的是一个基于Web技术构建的简单版Git差异对比工具。Git diff是Git版本控制系统中的一项功能,用于比较工作目录或暂存区与仓库中文件的不同之处。这个网页版...
Git Diff保证金 Git Diff Margin在Visual Studio页边距和滚动条上显示当前编辑文件的实时Git更改。产品特点通过Visual Studio 2019支持Visual Studio 2012 快速查看所有当前文件更改左边距在地图和条形码模式下滚动...
基于Web的两列git difftool。 功能包括: 并排(两列)差异视图 在您选择的浏览器中的任何平台上运行。 通过Highlight.js突出显示语法 在单个差异中来回浏览多个文件 丰富的图像差异支持 安装 pip install ...
karma-git-diff 一个 Karma 插件,用于将 git diff 列表导出到 JavaScript 测试。...在 Karma 中的 Javascript 中,现在将有一个window.__gitdiff__ ,它是一个已更改的文件数组。 > console.log(windo
GitDiff 显示 git 仓库和 XCode 源代码编辑器保存的代码文件的不同之处,复制仓库的内容到你的机器上,构建和重启 XCode。修改过的地方会用橙色标记,蓝色代表新加入的代码。删除的代码使用红色标记。 ...
Git Diff解析器是用于处理和理解Git diff输出的工具,它是版本控制系统Git的重要组成部分。在Crystal编程语言中,`git_diff_parser`库提供了一个简洁、高效的API,使得开发者能够轻松地解析Git diff输出,获取文件的...
showlinenum.awk - 显示 git diff 的行号 这个 gawk 脚本改变了 git diff 的输出以在每一行前面加上行号。 用法 git diff [options] | showlinenum.awk [options] showlinenum 的所有选项都需要一个值,并使用格式...
GitDiff 从 'git diff' 获取输出并将其转换为 Elixir 结构的简单实现。文献资料API 文档可在安装该软件包可以通过添加安装git_diff你在依赖列表mix.exs : def deps do [ { :git_diff , " ~> 0.6.3 " } ]end例子输出...
一个简单的git diff到html转换器 该项目旨在作为CLI应用程序运行。 我将提供一个Dockerfile以使用构建您自己的。 另外,我将提供另一个shellscript,该脚本将创建一个具有运行中的Web服务器的容器。 这样,您可以...
GitDiff9-Xcode 9的GitDiff 由于此插件已被“ Sherlocked”,因此不再受支持,仅在Xcode 11中有效。您需要先保存文件,然后才能突出显示高光。 现在,源代码编辑器已在Swift中实现,“ GitDiff” Xcode插件已连接...
React差异视图一个git diff组件,用于消耗git统一diff输出。概述拆分视图统一检视优化选择功能齐全一个干净而小巧的核心,可以显示差异。 支持拆分(并排)视图和统一(一列)视图。 可容忍的性能。 灵活的装饰组件...
diff2html-cli-漂亮的git diff到HTML生成器diff2html-cli的diff到html从终端中的统一和git diff输出生成漂亮HTML diff目录功能在线示例发行版设置用法退出状态代码自定义HTML包装器模板示例贡献开发许可证谢谢功能...
【GD:改进版的“git diff”】 GD 是一个基于 Shell 的工具,旨在提供一个更加友好、色彩丰富且直观的 `git diff` 输出界面,替代了默认在 less 命令中查看差异的方式。它通过增强可视性,帮助开发者更轻松地识别...
git-difftool 围绕“git diff”的 Python 包装器,方便查看更改 执照 在 Boost 软件许可下分发,版本 1.0。 (请参阅随附文件 LICENSE_1_0.txt 或复制到 ) 兼容性 需要 Git 1.7.2 或更高版本。 我在 cygwin 和 ...
Git提供了一种查看代码差异(diff)的方法,帮助开发者理解代码的变更历史。然而,原始的Git diff输出可能不太适合阅读,尤其是在处理大量或复杂改动时。这就是diff2html-cli的用武之地,它是一款基于Node.js的...
git 没有提供导出变化文件的功能。 实现类似 svn export的功能,导出有变化的文件。(bash shell)
meld Linux上最好用的可视化的git diff工具,CentOS 7 官方 rpm包 链接失效后的备份
Git的一个插件比较Excel的差异,A free and open-source local Git extension