前面学习了Git的基本操作,后面继续学习,加油!
查看.git目录的究竟
首先进入被git管理的文件的根目录,可以看到一个.git文件夹。
就是图片展示的这个目录结构。
COMMIT_EDITMSG
最新的一次commit message
config
存放本地仓库(local)相关的配置信息
description
仓库的描述信息,在GitHub创建仓库的时候,可以看到这个选项。
HEAD
指向当前的工作路径,映射到ref引用。
hooks
存放一些Shell脚本
index
暂存区,一个二进制文件
info
exclude/ 存放仓库的一些信息
logs
保存了所有更新的版本日志
objects
存放所有对象,文件夹中的子文件夹都是以哈希值的前两位字符命名 每个object由40位字符组成,前两位字符用来当文件夹,后38位做文件
要想知道这个文件是什么类型、大小、内容。可以通过以下命令查看。
git cat-file 命令 显示版本库对象的内容、类型及大小信息。
git cat-file -t b44dd71d62a5a8ed3 显示版本库对象的类型
git cat-file -s b44dd71d62a5a8ed3 显示版本库对象的大小
git cat-file -p b44dd71d62a5a8ed3 显示版本库对象的内容
例如:要想看09这个代表什么,首先进入文件夹,获取里面的文件id,然后文件夹的名字+文件名,就知道是什么了。
基本上就是这样,可以自己动手看一下。
refs
- heads:存放分支
- tags:存放tag,又叫里程牌(当这次commit是具有里程碑意义的 比如项目1.0的时候 就可以打tag)
因为我这里没有设置tag,所以里面为空
commit,blob,tree
- 一个commit就是一个tree。
- 一个tree里面既包含tree又包含blob。(tree对应文件夹,blob对应文件)
- 一个blob里面是文件内容。
ps:git的文件和文件名没关系。只要是内容相同,文件名不同,git默认是同一个文件。
可以根据上面的查看文件类型、大小、内容的命令,自行查看自己git项目中的这三个对象。
分离头指针
是指当前操作不在任何分支上。
适用场景:尝试性变更,就可以使用分离头指针。
git branch fix_readme 2037cd1 #保留分支
git checkout -b new_branch master #创建(基于master)的分支,并自动切换到这个分支
git diff commit1 commit2 #比较两个commit的差异
git diff HEAD HEAD^ #比较两个commit的差异 ^指代HEAD的父亲
案例:假设对某个文件进行样式的调整,我们采用基于某个commit的情况下,进行分离头指针。等文件变更完后。发现调整后不符合业务需求。所以,只需要切回到原来的分支就行了。
删除不需要的分支
git branch -d fix_readme #删除分支
git branch -D fix_readme #强制删除分支
为中华之崛起而读书