`
zhangyf1987hb
  • 浏览: 83514 次
  • 性别: 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的用法就简单温习到这里吧。

分享到:
评论

相关推荐

    webdiff:基于Web的两列git difftool

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

    git_diff_parser:Crystal中的Git Diff解析器

    `git_diff_parser`库提供了类和方法来解析Git diff输出,包括文件变更、行更改等。它能处理不同类型的diff,如`--stat`、`--name-only`、`--raw`等。通过这个库,开发者可以方便地获取到诸如文件名、添加/删除行数...

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

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

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

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

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

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

    diff2html-cli-PrettygitdifftoHTMLgenerator

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

    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 ...

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

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

    pretty-diff:彩色HTML差异

    安装只需通过npm在全球范围内安装: npm install -g pretty-diff用法漂亮差异pretty-diff没有自己的设置。 只需提供您想要传递给git diff任何设置即可。 例如,查看上一次提交中的更改: pretty-diff HEAD^要点差异...

    如何巧用vimdiff来替代原始的svn diff和git diff(效率提升)

    默认情况下,`git diff`以文本形式显示差异,但通过以下命令,我们可以让Git使用Vimdiff作为默认的差异工具: ```bash git config --global diff.tool vimdiff git config --global difftool.prompt false git ...

    auto-git-diff:一个Vim插件,显示Git Rebase Interactive的git diff

    通常,这样的文件夹结构会包含`README.md`文件,用于解释插件的安装和使用方法;`.vim`目录可能包含插件的Vim脚本文件;`doc`目录可能有帮助文档;`ftplugin`或`plugin`目录下可能存放用于在特定文件类型或全局启用...

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

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

    diff(Java实现)

    在IT领域,`diff`是一种广泛使用的工具,用于比较两个文件或文本的差异。这个概念源自于Unix操作系统中的命令行工具,但现在已经被许多其他平台和编程语言所采用,包括Java。`diff`算法的核心在于找出两个文件之间的...

    git 常用命令及下载android方法

    例如,使用 `git diff` 命令可以查看自上次提交以来,本地代码改动的具体情况。 使用 `git diff --cached` 命令可以查看暂存区的文件改动情况。 使用 `git diff HEAD` 命令可以查看工作目录中的文件改动情况。 ...

    Git权威指南

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

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

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

    Git使用简介.pptx

    本文档将对 Git 的基本概念和使用方法进行介绍,并对 Git 的分支模型进行详细的解释。 Git 的基本概念 Git 的基本概念包括快照、暂存区域和提交记录。快照是文件的当前状态,暂存区域是文件的暂存状态,提交记录是...

Global site tag (gtag.js) - Google Analytics