git暂存区(git权威指南笔记)

    xiaoxiao2021-03-25  57

    1、查看提交(commit)日志:git log 

     看到每次提交的文件变更统计: --stat        git log --stat

    精简输出日志:--pretty=oneline  git log --pretty=oneline

    2、查看文件状态: git  status

    精简格式的状态输出:-s   git status -s 

    3、git diff 

    不带任何选项和参数:显示工作区的最新改动(即工作区与提交任务(暂存区,Stage)相比的差异)

    工作区和HEAD(当前工作分支):git diff HEAD

    提交暂存区和版本库:git  diff --cached

    4、撤销工作区中测未提交的修改:git checkout -- <file>  git checkout -- welcome.txt

    5、git status (git diff)扫描工作区改动的时候。

    git判断文件有没有改变:先比较文件的时间戳、文件大小,再比较文件内容。

    先依据.git/index文件中记录的(用于跟踪工作区文件的)时间戳、长度等信息判断工作区文件是否改变,如果工作区文件的时间戳改变了,说明文件的内容可能被改变了,

    需要打开文件,读取文件内容,与更改这前的原始文件相比较,判断文件内容是否被更改。如果文件内容没有更改,则将该文件新的时间戳记录到.git/index文件中。

    .git/index 虚拟工作区的目录树(文件名和文件状态信息)

    .git/objects 文件内容

    文件索引:建立了文件和对象库中对象实体之间的对应

    6、工作区、暂存区、版本库目录相对浏览:  

    版本库目录权:

    git ls-tree -l HEAD 

    显示文件的大小:-l 

    100644 blob a11790e8c69269e02e04f141bc00c9f94b79b99d      10    README.md

    输出内容:

    100644):文件的属性(rw-r--r--) 

    blob :git对象库中的一个blob对象(文件)

    a11790e8c69269e02e04f141bc00c9f94b79b99d:文件在对象库中对应的ID

    清除工作区中没有加入版本库的文件和目录(非跟踪文件和目录):git clean -fd 

    用暂存区内容刷新工作区 git checkout .

    暂存区目录树:

    git ls-files -s 

    100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       testthree.txt

    0 暂存区编号

    针对暂存区便用 git ls-tree

    先把暂存区的目录树写入git对像库: git write-tree

    写入对象库中的TreeID :0f0f267c5bad5f73942a77580a6eb4af24daa425

    然后 git ls-tree -l 0f0f26

    040000 tree 1e4f7e68a173bb0f1e36b70d48436412f3fdac00       -    a (tree树对角,一级目录a)

    100644 blob ce013625030ba8dba906f756967f9e9ca394464a       6    testone.txt

    对本地所有变更的文件执行提交操作,包括对本地修改的文件和删除的文件,但不包括未被版本库跟踪的文件:git commit -a (不要使用,因为会丢掉Gi暂存区带给用户的最大好处:对提交内容控制的能力)

    暂存状态:git stash

    转载请注明原文地址: https://ju.6miu.com/read-38821.html

    最新回复(0)