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,第三列是暂存区编号,第四列是文件名
浙公网安备 33010602011771号