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
上班之后发现咋提交代码的都有,手动挡用命令行,自动挡用软件提交,还有手自一体混着用的 ...
不错了
我还没用过git...
这个星期刚开始学...
(一之因为这个问题喷了我好久了) gitlens插件 yyds 李恒道 发表于 2022-5-26 10:36
不错了
我还没用过git...
这个星期刚开始学...
哈哈哈哈哈哈,那你github上的项目咋提交的,昨天关注你了 lty123 发表于 2022-5-27 10:40
哈哈哈哈哈哈,那你github上的项目咋提交的,昨天关注你了
没错
不提交...
真有什么提交的时候喊一之远程帮我提交...
页:
[1]