1 git log 命令查看提交日志信息
git log --pretty-fuller #详细查看
git log --stat #查看每次提交的文件变更
git log --pretty-online
2git diff 对比文件的修改信息
git diff HEAD git add . 后与当前版本库的头指针比较
git diff --cached 或--staged 提交暂存区和版本库中的文件差异
git 命令是如何影响工作区和暂存区的
左侧为工作区 右侧为版本库 。 版本库中标记为index的为暂存区, 标记为master的是master分支代表的目录树
HEAD是指向master分支的一个游标 图中出现的HEAD可以用master替换
图中objects为git的对象库实际位于 .git/objects目录下
对工作区修改(或新增)的文件执行git add 命令时,暂存区的目录树被更新 同时工作区修改(或新增)的文件内容会被写到对象库中的一个新的对象中 而该对象的id被记录在暂存区的索引文件中
当执行提交commit操作时 暂存区的目录树会写道当前版本库(对象库)中 master分支会做出相应的更新, 即master最新指向的目录树就是提交时原暂存区的目录树
当执行git reset HEAD时,暂存区的目录树会被重写,会被maste指向的目录树所替换,但工作区不变
当执行git rm --cached (filename)时会直接从暂存区删除文件但工作区不变
当执行git checkout . 或 git checkout -- (file) 命令时会用暂存区的全部文件或指定文件去替换掉工作区的全部或指定文件。 这个操作会清除工作区中尚未添加到暂存区中的改动
当执行git checkout HEAD . 或git checkout HEAD (file) 命令时 会用HEAD指向的master分支中的全部或指定文件替换暂存区和工作区中的文件。同时清除工作区和暂存取中尚未提交的改动