git diff的用法
2015-06-07 19:35
218 查看
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的信息)
为了更加清晰的阐释这个关系,来给出一个实例。
[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的用法就简单温习到这里吧。
相关文章推荐
- ADO.NET学习系列(四)---窗体版的登录小程序
- 栈的应用3——表达式求值
- 【Android 个人理解(九)】Activity的生命周期方法的深入理解
- block 注意
- Java for LeetCode 206 Reverse Linked List
- java 之 类和对象 笔记
- 第十三周项目--动态链表小练习
- 第十按周项目一 动物这样叫
- CLR执行模型
- C++ tips: 类成员函数的参数默认值
- CLR执行模型
- POJ - 3041 Asteroids 二分图 最小点覆盖
- C语言里字符串的解析
- C#XML操作
- Hilbert变换及谱分析
- java基础—IO流概述
- ProgressBar与ProgressDialog的区别
- js日期格式
- uexGaodeMap插件Android接入指引
- 3137链表的增删,插入排序,输入输出