`
zhangyf1987hb
  • 浏览: 80466 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

git diff的用法

    博客分类:
  • 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命令。然后你再将源代码改为:

  1. [yaya@yaya-desktop]$ cat main.c
  2. #include<stdio.h>
  3. int main(int argc,char *argv[])
  4. {
  5. printf(“hello.\n”);
  6. printf(“he was a student.\n”);
  7. printf(“he was born in finland.\n”);
  8. printf(“he is very clever!\n”);
  9. return 0;
  10. }
复制代码


这个时候,你执行如下三个命令,仔细查看,我相信你会发现它们三个的区别的!
$ 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的用法就简单温习到这里吧。

分享到:
评论

相关推荐

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

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

    webdiff:基于Web的两列git difftool

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

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

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

    atom-git-difftool:在.gitconfig中配置的差异工具中打开当前项目

    从命令面板运行Git Difftool: Diff File差异Git Difftool: Diff File ,或使用⌥⌃D差异当前打开的文件。 从命令面板运行Git Difftool: Diff Project ,或使用⌃⇧D区分整个项目。 配置 编辑您的~/.gitconfig或阅读...

    git-diff-archive:使用node.js和git存档差异文件

    使用node.js和git归档差异文件。 截屏 安装 建议进行全局安装。 $ npm install git-diff-archive -g 用法 进入工作目录。 然后,运行git_diff_archive或gda命令。 $ cd /your/project/dir $ git_diff_archive ...

    react-native-diff-view:一个用于解析和显示git diff的React Native模块

    一个用于解析和显示git diff的React Native模块。 这个库受到启发,并从中借鉴了代码。 概述 该库的目的是为任何提供的差异分析并呈现统一的差异视图。 灵活的窗口小部件系统还允许在每行(或“更改”)的基础上...

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

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

    Git权威指南

    第5篇介绍了git服务器的架设,首先讲解了http协议、git协议、ssh协议的使用,然后讲解了gitolite、gitosis、gerrit等服务器的架设方法,最后还讲解了git版本库的托管。第6篇介绍了版本库的迁移,包括如何从cvs、svn...

    delta:git和diff输出的查看器

    git和diff输出的查看器代码在... n和N键绑定可在大型差异文件之间以及log -p视图中的差异之间移动( --navigate ) 配置增量的最方便方法是使用~/.gitconfig [delta]部分。 这是一个简单的例子: [ core ] pager = delt

    locust:抽象语法树上的“ git diff”

    从PyPI安装pip install -U setuptoolspip install bugout-locust从源安装克隆此存储库并从项目根目录运行: python setup.py install码头工人您还可以使用Locust泊坞窗映像: docker pull bugout/locust用法命令行界

    nodegit-kit:返回本机Promises的补充NodeGit助手,可帮助git命令,例如init,add,commit,status,diff

    欢迎在上评论安装npm i --save nodegit-kit用法var git = require ( 'nodegit-kit' ) ;git . open ( '../repo-path/new/or/existing' ). then ( repo =&gt; { // git diff return git . diff ( repo ) . then ( diff =...

    code-diff:基于git的差异代码获取

    使用方法 1,修改application.yml git: userName: rayduan #git账号 password: FDsfret334 #git密码 2,运行项目,访问 2.1 输入git地址,填写差异分支的旧版本,新版本,执行,就可以获取差异信息 2.2 { ...

    git 使用方法简介

    git 很好的使用 介绍,一个外国网站下载过来的

    Git Community Book(中文版)

    比较提交 - Git Diff 分布式的工作流程 Git标签 4. 中级技能 忽略某些文件 rebase 交互式rebase 交互式添加 储藏 Git树名 追踪分支 使用Git Grep进行搜索 Git的撤消操作 - 重置, 签出 和 撤消 维护Git 建立一个...

    git常用命令总结.pdf

    以下是 Git 常用命令总结,使用表格形式展示。 命令 描述 git init 初始化仓库 git add [file] 添加文件到暂存区 git commit -m "[message]" 提交代码到本地仓库 git status 查看工作区和暂存区状态 git diff 查看...

    sf-packager:使用git diff的Salesforce.com软件包生成器

    概述CLI工具,用于基于两个分支,提交或标记之间的git diff生成Salesforce.com package.xml(和destructiveChange.xml)文件。安装npm install -g sf-packager用法$ sfpackage destinationBranch sourceBranch ./...

    淘宝-git优化包 自动配置,只需要一个命令完成所有常用配置

    git dt = git difftool git mt = git mergetool 设置notepade2为日志编辑器(windows) 提交代码时不指定‘-m’参数,即会自动打开notepad2让您编辑日志信息 :P 设置TortoiseMerge为代码对比和合并工具(windows) ...

    git-split-diffs:GitHub样式在您的终端中拆分差异

    git-split-diffs(beta) :warning: 此软件包目前处于测试阶段,...git diff | git-split-diffs --color | less 客制化 换行 默认情况下,将行换行以适合屏幕。 如果您希望截断它们,请更新wrap-lines设置: git con

    diff2html-cli:与html javascript cli相当的差异(diff2html-cli)

    用法:diff2html [标志和/或选项]-[git diff passthrough标志和选项] 旗 别名 描述 选择 默认 -s - 风格 输出方式 line , side line --sc --synchronizedScroll 同步水平滚动 true , false true --hc --...

    pretty-xml-textconv:在git diff的命令提示符下将xml转换为漂亮的形式

    pretty-xml-textconv file.xml &gt;&gt; out.txtgit的用法对于在所有git存储库中的实现,请使用:git config --global diff.xml.textconv pretty-xml-textconv 在特定项目中,.gitattributes中包含以下行: *.xml diff=xml...

Global site tag (gtag.js) - Google Analytics