git diff的用法
2015-12-08 14:58
295 查看
本文转自http://blog.sina.com.cn/s/blog_40e9d4dd0100xi8p.html
在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的信息)
为了更加清晰的阐释这个关系,来给出一个实例。
然后git init, git add . , git commit;
之后你将源代码修改为:
此时你git add .,但不用执行git commit命令。然后你再将源代码改为:
复制代码
这个时候,你执行如下三个命令,仔细查看,我相信你会发现它们三个的区别的!
讲到这里,基本上对git diff命令有了比较深入的了解了,现在你再使用git status看看输出结果,样子大概是这样:
很明显可以知道:
Changes to be committed表示已经存在于index file里,但尚未提交。
Changed but not updated表示在working tree已经做修改,但还没有使用git add登记到index file里。
好了,对于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的用法就简单温习到这里吧。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令
- 分享下自己总结的Git常用命令
- Git 常用命令速查表(图文+表格)
- mac git xcrun error active developer path 错误