git diff的用法

git diff的用法

在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的信息)

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

[[email protected]]$ 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;
之后你将源代码修改为:

[[email protected]]$ 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. [[email protected]]$ 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看看输出结果,样子大概是这样:

[[email protected]]$ 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的用法就简单温习到这里吧。

时间: 2024-08-05 17:45:11

git diff的用法的相关文章

【git】Git diff 常见用法

Git diff 用于比较两次修改的差异 1.1 比较工作区与暂存区 git diff 不加参数即默认比较工作区与暂存区 1.2 比较暂存区与最新本地版本库(本地库中最近一次commit的内容) git diff --cached [<path>...] 1.3 比较工作区与最新本地版本库 git diff HEAD [<path>...] 如果HEAD指向的是master分支,那么HEAD还可以换成master 1.4 比较工作区与指定commit-id的差异 git diff

Git diff 用法

转自:https://www.cnblogs.com/qianqiannian/p/6010219.html Git diff 用于比较两次修改的差异 1.1 比较工作区与暂存区 git diff 不加参数即默认比较工作区与暂存区 1.2 比较暂存区与最新本地版本库(本地库中最近一次commit的内容) git diff --cached  [<path>...] 1.3 比较工作区与最新本地版本库 git diff HEAD [<path>...]  如果HEAD指向的是mast

git diff 的简单使用(比较版本区别)

假如我们修改viewMail.vue 文件(部分代码) 从 //根据ID获取详情 getById () { let that = this; this.viewMailModal = true; this.loading = true; post('/presidentmailinfoController/selectByPrimaryKey', {id: this.viewId, initiatorType: 3}).then(res => { that.loading = false; if

git diff获取差异文件中文乱码的解决办法

通过git的diff命令对两个commit id的版本进行差异化的对比.中文文件时出现乱码. git diff 6bded8d0c1fe1746c122121217dc0c88667091089 a9b87b07908a446a5471b233232ade2dbd0734d8 --name-only "markdown/2016/07/\345\210\206\346\224\257\346\265\213\350\257\225.md" 执行如下命令,修改core.quotepath

emacs 中使用git diff命令行

在shell中运行git diff命令,经常会看到如下警告信息: terminal is not fully functional 其实很简单,配置一下即可. git-config --global core.pager ""

git Diff

在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

SVN子命令diff三大用法详解

主要介绍SVN子命令diff的用法 检查历史修改的详情:SVN子命令 diff-使用标准区别文件格式显示区别,它在提交前用来显示本地工作拷贝与版本库的区别. 事实上,SVN子命令diff有三种不同的用法:1. 检查本地修改 2. 比较工作拷贝与版本库 3. 比较版本库与版本库 比较本地修改:像我们看到的,不使用任何参数调用时,svn diff将会比较你的工作文件与缓存在.svn的"原始"拷贝:$ svn diffIndex: rules.txt=====================

三十七、git diff简介

原文: http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-diff.html git diff可以比较working tree同index之间,index和git directory之间,working tree和git directory之间,git directory中不同commit之间的差异,同时可以通过[<path>...]参数将比较限定于特点的目录或文件 . git diff

git diff 打补丁

[[email protected] demo]# git diff old new >cc.diff[[email protected] demo]# cat cc.diffdiff --git a/old/a/p/foo.txt b/new/a/p/foo.txtindex f041bcd..7351245 100644--- a/old/a/p/foo.txt+++ b/new/a/p/foo.txt@@ -1,2 +1,2 @@-old_line_1-old_line_2+new_lin