李恒道 发表于 2022-5-25 23:40:06

git学习笔记(一)

# 前言
单纯当个记录,习惯在论坛写东西了...
强烈安利【麦兜搞IT】的git系列
https://www.bilibili.com/video/BV1TA411q75f/?spm_id_from=333.788
目前感觉全网讲的最清晰的没有之一!
简直好看到绝绝子
暴风吸入啾咪~
# 笔记

## git init

会生成一个.git目录

### config文件

代码仓库的配置文件

配置文件分为系统,当前用户,本地三种配置文件

下级覆盖上级的配置文件

### git add

add会在git目录的objects文件夹生成对应2位字节目录

然后生成一个hash(根据sha1)的压缩文件,并在git目录有一个index文件

生成的hash文件,只存储文件内容,而不存储文件名

我们可以使用git cat-file 去查看objects文件



git cat-file -t 文件 返回类型

blob是用来存储文件内容的

git cat-file -p查看文件的内容

git cat-file -s查看文件的大小



hash生成的方式为【类型名+数字+\0+文件数据】进行SHA1

前2个进制作为目录,后边的作为文件名

文件内的原始内容会通过zlib压缩后存入文件中

而文件的信息都存储在index里(文件夹不算对象)

git ls-files查看index文件

添加-s参数列出详细文件信息(文件权限文件sha1 文件名)

在git status的过程中

会根据暂存库index的sha1与工作区的sha1进行对比

查看是否存在文件更新

### git commit

通过commit命令执行

会在objects目录里生成一个commit object对象

内包含的内容有

---

tree对象 sha1

parent对象

commit作者信息 明智 地址 时间戳 时区

commit 信息

---



git一共存在三种对象 blob 对象 commit对象 tree对象

---

tree对象包含的信息有

提交的文件目录

tree相当于一个目录结构

---





commit会改变objects目录 logs目录 refs目录

refs内的heads的master分支的内容会指向commit对象,相当于一个分支

.git/HEAD永远指向当前工作的分支

HEAD指向refs内的分支

而refs指向commit对象





如果commit的时候暂存区存在文件夹对象

则再index文件中不存在文件夹对象

而在commit之后

commit对象中会存在tree对象

而tree对象不仅像之前存在blob对象,也会存在文件夹的tree对象

相当于一个文件夹的结构
![图片.png](data/attachment/forum/202205/25/233917l5ooqlybg3vbg55t.png)

### 文件状态

文件状态有

Untracked未跟踪,工作区新创建的文件,通过git add变成staged

Modified已修改,已在staged,但改变了,通过git add变成staged

Staged已存储,将index文件状态同步到仓库中,通过git commit

Unmodified未修改

![图片.png](data/attachment/forum/202205/25/233943twgwccnn2comw855.png)





















lty123 发表于 2022-5-26 10:33:58

上班之后发现咋提交代码的都有,手动挡用命令行,自动挡用软件提交,还有手自一体混着用的

李恒道 发表于 2022-5-26 10:36:27

lty123 发表于 2022-5-26 10:33
上班之后发现咋提交代码的都有,手动挡用命令行,自动挡用软件提交,还有手自一体混着用的 ...

不错了
我还没用过git...
这个星期刚开始学...
(一之因为这个问题喷了我好久了)

wwwwwllllk 发表于 2022-5-26 17:07:26

gitlens插件 yyds

lty123 发表于 2022-5-27 10:40:20

李恒道 发表于 2022-5-26 10:36
不错了
我还没用过git...
这个星期刚开始学...


哈哈哈哈哈哈,那你github上的项目咋提交的,昨天关注你了

李恒道 发表于 2022-5-27 10:41:56

lty123 发表于 2022-5-27 10:40
哈哈哈哈哈哈,那你github上的项目咋提交的,昨天关注你了

没错
不提交...
真有什么提交的时候喊一之远程帮我提交...
页: [1]
查看完整版本: git学习笔记(一)