git学习笔记(三)--git的暂存区

git的提交相比于svn和cvs是比较有特色的,分为两步提交,而不是一次提交成功;

第一次提交到暂存区,第二次才提交到版本库

 

 

1. git diff 显示的内容分析:


 

第一行追加了一句话,修改了源文件

第二行git diff命令

第三行指出了存在区别

第四行给出了文件ID和权限

第五行的---表示这个是原文件

第六行的+++表示这个是新文件

第七行@@xxoo@@中,-1和2表示从原文件的第一行开始的两行,而+1和3表示从新文件第一行开始的3行

第八行,第九行第一列是空白,表示原文件和新文件共有的内容

第十行第一列是+,表示这是新文件新增的内容

 

2. 查看工作区,暂存区和版本库区别的方法


 

 git diff      //查看工作区和暂存区内容的差异

   git diff HEAD   //查看工作区和版本库内容的差异

 git diff --cached  //查看暂存区和版本库内容的差异

 

3. 查看当前git状态


 

  git status    //标准输出,会给出提示

  git status -s   //简化输出,指告诉文件当前的状态

如图,第一次git status -s后,输出行有2个M,第一列的M表示版本库和暂存区之间有差别,说明已经有新的修改add但没有commit

第二列M表示工作区与版本库之间存在差别,说明已经有文件修改但还没有add

在图中第3行add后,再查看状态,第二个M消失,说明工作区已经add

在途中第5行commit后,再查看状态,已经没有显示,说明工作区,暂存区和版本库已经一致

 

4. 对于git暂存区的理解:


 

git status扫描工作区改动的时候,先依据.git/index文件记录的时间戳和长度来判断是否有过改动

.git/index实际是一个包含文件索引的目录树,文件内容保存在.git/objects目录中

 

 

5. 几个常用命令:

  git clean -fd    //清除当前工作区的改动

  git checkout .     //用暂存区内容覆盖工作区的内容

  git add .      //把工作区内容添加到暂存区

  git ls-tree -l HEAD  //查看当前HEAD的目录树

  git ls-files -s      //查看暂存区的目录树

如图,第二行第一列是文件权限,第二列说明列出的git对象库中的blob(文件)对象,第三列是文件ID,第四列是文件大小(B),第五列是文件名

第四行第一列是权限,第二列是ID,第三列是暂存区编号,第四列是文件名

 

posted on 2012-07-21 23:01  melburg  阅读(347)  评论(0)    收藏  举报