在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里。
好了,对于git diff的用法就简单温习到这里吧。
相关推荐
一个简单的git diff到html转换器 该项目旨在作为CLI应用程序运行。 我将提供一个Dockerfile以使用构建您自己的。 另外,我将提供另一个shellscript,该脚本将创建一个具有运行中的Web服务器的容器。 这样,您可以...
基于Web的两列git difftool。 功能包括: 并排(两列)差异视图 在您选择的浏览器中的任何平台上运行。 通过Highlight.js突出显示语法 在单个差异中来回浏览多个文件 丰富的图像差异支持 安装 pip install ...
diff2html-cli-漂亮的git diff到HTML生成器diff2html-cli的diff到html从终端中的统一和git diff输出生成漂亮HTML diff目录功能在线示例发行版设置用法退出状态代码自定义HTML包装器模板示例贡献开发许可证谢谢功能...
从命令面板运行Git Difftool: Diff File差异Git Difftool: Diff File ,或使用⌥⌃D差异当前打开的文件。 从命令面板运行Git Difftool: Diff Project ,或使用⌃⇧D区分整个项目。 配置 编辑您的~/.gitconfig或阅读...
使用node.js和git归档差异文件。 截屏 安装 建议进行全局安装。 $ npm install git-diff-archive -g 用法 进入工作目录。 然后,运行git_diff_archive或gda命令。 $ cd /your/project/dir $ git_diff_archive ...
一个用于解析和显示git diff的React Native模块。 这个库受到启发,并从中借鉴了代码。 概述 该库的目的是为任何提供的差异分析并呈现统一的差异视图。 灵活的窗口小部件系统还允许在每行(或“更改”)的基础上...
showlinenum.awk - 显示 git diff 的行号 这个 gawk 脚本改变了 git diff 的输出以在每一行前面加上行号。 用法 git diff [options] | showlinenum.awk [options] showlinenum 的所有选项都需要一个值,并使用格式...
第5篇介绍了git服务器的架设,首先讲解了http协议、git协议、ssh协议的使用,然后讲解了gitolite、gitosis、gerrit等服务器的架设方法,最后还讲解了git版本库的托管。第6篇介绍了版本库的迁移,包括如何从cvs、svn...
git和diff输出的查看器代码在... n和N键绑定可在大型差异文件之间以及log -p视图中的差异之间移动( --navigate ) 配置增量的最方便方法是使用~/.gitconfig [delta]部分。 这是一个简单的例子: [ core ] pager = delt
从PyPI安装pip install -U setuptoolspip install bugout-locust从源安装克隆此存储库并从项目根目录运行: python setup.py install码头工人您还可以使用Locust泊坞窗映像: docker pull bugout/locust用法命令行界
欢迎在上评论安装npm i --save nodegit-kit用法var git = require ( 'nodegit-kit' ) ;git . open ( '../repo-path/new/or/existing' ). then ( repo => { // git diff return git . diff ( repo ) . then ( diff =...
使用方法 1,修改application.yml git: userName: rayduan #git账号 password: FDsfret334 #git密码 2,运行项目,访问 2.1 输入git地址,填写差异分支的旧版本,新版本,执行,就可以获取差异信息 2.2 { ...
git 很好的使用 介绍,一个外国网站下载过来的
比较提交 - Git Diff 分布式的工作流程 Git标签 4. 中级技能 忽略某些文件 rebase 交互式rebase 交互式添加 储藏 Git树名 追踪分支 使用Git Grep进行搜索 Git的撤消操作 - 重置, 签出 和 撤消 维护Git 建立一个...
以下是 Git 常用命令总结,使用表格形式展示。 命令 描述 git init 初始化仓库 git add [file] 添加文件到暂存区 git commit -m "[message]" 提交代码到本地仓库 git status 查看工作区和暂存区状态 git diff 查看...
概述CLI工具,用于基于两个分支,提交或标记之间的git diff生成Salesforce.com package.xml(和destructiveChange.xml)文件。安装npm install -g sf-packager用法$ sfpackage destinationBranch sourceBranch ./...
git dt = git difftool git mt = git mergetool 设置notepade2为日志编辑器(windows) 提交代码时不指定‘-m’参数,即会自动打开notepad2让您编辑日志信息 :P 设置TortoiseMerge为代码对比和合并工具(windows) ...
git-split-diffs(beta) :warning: 此软件包目前处于测试阶段,...git diff | git-split-diffs --color | less 客制化 换行 默认情况下,将行换行以适合屏幕。 如果您希望截断它们,请更新wrap-lines设置: git con
用法:diff2html [标志和/或选项]-[git diff passthrough标志和选项] 旗 别名 描述 选择 默认 -s - 风格 输出方式 line , side line --sc --synchronizedScroll 同步水平滚动 true , false true --hc --...
pretty-xml-textconv file.xml >> out.txtgit的用法对于在所有git存储库中的实现,请使用:git config --global diff.xml.textconv pretty-xml-textconv 在特定项目中,.gitattributes中包含以下行: *.xml diff=xml...