Git总结

Git命令:
1、
* 精简输出:git status -s
* 精简输出提交ID: git log --oneline
* 带说明的提交: git commit -m ""
* 撤销工作区尚未提交的更改:git checkout
* git diff 工作区与暂存区之间的改动, git diff --cached 暂存区和当前工作分支的比较, git diff head 工作区和当前工作分支 git 
* 清除当前工作区中没有加入版本库的文件和目录(非跟踪文件和目录) git clean -fd
* 显示暂存区的目录树:git ls-files -s
* 使用git ls-tree -l HEAD命令查看HEAD中的目录树:返回结果如下:100644 blob 17367963649d34750ef1944f1bf3716ccdef01b5 10newTestFile.txt ; 五列分别表示文件属性,文件类型(blob对象),文件ID,文件大小,文件名。
* 使用git cat-file -t id查看指定ID的对象类型,使用git cat-file -p id查看指定ID的对象内容。
* 使用git stash命令来讲工作区和暂存区的改动全部封存起来,使用git stash list来恢复已经暂存的进度.
* 重置到上一次提交:git reset head^; 重置到指定提交:git reset commitID;
* 列出master提交的历史记录:git reflog master,根据记录值来重置到指定提交。

——————————————————————————————————————————————————

Git知识点:
1、
* HEAD(当前版本库的头指针),master(当前工作分支),文件.git/index实际上就是一个包含文件索引的目录树,记录了文件名和文件的状态信息(如:时间戳和文件长度等),文件的内容并没有存储在其中,而是存储在Git对象库.git/objects目录中,文件索引建立了文件核对系那个苦中对象是实体间的对应。
* 当对工作区修改的文件执行 git add 命令时,暂存区的目录树将被更新,同时工作区的修改的文件内容会被写入到对象库的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
* 当执行提交操作git commit是,暂存区的目录树会写到对象库中,并且master分支会做出相应的更新,即master最新指向的目录是就是提交奥是原暂存区的目录树。
* 当执行git reset HEAD命令时,暂存区的目录树会被重写,会被master分支指向的目录树所替换,但是工作区不受影响。
* 当执行git rm --cached命令时,会直接从暂存区删除文件,工作区则不回做出改变
* 当执行git checkout命令时,会用暂存区的文件来替换工作区的文件,即这个操作会清除工作区仲未添加到暂存区的改动。
* 当执行git checkout HEAD命令时,会用HEAD指向的master分支中的文件替换暂存区和工作区的文件,即清除所有未提交的改动。
2、
master作为分支名称,指向一个最新提交的ID,通过这个ID就可以将对象库和目录树联系起来,这样就可以查到该分支上每一次的提交历史记录。通过cat .git/HEAD命令可以发现HEAD其实就是对master文件的引用,而master文件指的正是当前分支的最新提交的ID.

你可能感兴趣的:(Git总结)