1. 前言
2. git add 基本操作
3. git add 命令參數(shù)
4. git add 背后做了什么
1. 前言
眾所周知,git 中有工作區(qū)、暫存區(qū)、版本庫(kù)三大組成部分
工作區(qū): 電腦中能看到的目錄,也就是寫(xiě)代碼的地方
暫存區(qū): 英文叫 stage 或 index。一般存放在 .git 目錄下的 index 文件中,暫存區(qū)有時(shí)也叫做索引
版本庫(kù): 在工作區(qū)中有一個(gè)隱藏目錄 .git,這個(gè)不算工作區(qū),而是 git 的版本庫(kù)
2. git add 基本操作
add 命令的作用就是將工作區(qū)的文件添加到暫存區(qū)
使用示例
# 將某些文件提交到暫存區(qū)
git add <file1> <file2>
# 將某些目錄提交到暫存區(qū)
git add <folder1> <folder2>
3. git add 命令參數(shù)
-A, --all
?add changes from all tracked and untracked files 添加所有跟蹤和未跟蹤文件的更改
-A 參數(shù)會(huì)監(jiān)控工作區(qū)的狀態(tài)樹(shù),它會(huì)把工作區(qū)的所有變化提交到暫存區(qū),包括修改(modified)、新文件(Untracked files)、刪除的文件(deleted)。使用?.
?在 git 2.x 也可以達(dá)到一樣的效果,但在 git 1.x 中不同的是?.
?不會(huì)監(jiān)控刪除的文件
在 git2.x 中,下面兩種用法的效果完全相同
git add .
git add -A
-u, --update
?update tracked files 只更新已被跟蹤文件
只監(jiān)控已經(jīng)被 add 的文件,也就是 tracked files,不會(huì)監(jiān)控沒(méi)有被跟蹤的新文件
git add -u
4. git add 背后做了什么
先說(shuō)結(jié)論:?git add
?會(huì)在?.git/objects
?目錄下面創(chuàng)建一個(gè)目錄和文件,并且在?.git/index
?文件中添加一行內(nèi)容
這里會(huì)說(shuō)到?git cat-file
?命令,雖然平時(shí)不怎么用,但是它能幫助我們理解?git add
?背后到底做了什么
創(chuàng)建一個(gè) git 倉(cāng)庫(kù),用于查看 git add 背后做了什么操作
$ git init
$ echo 'hello git' >> 1.txt
$ git add 1.txt
$ .git/objects
├── 8d
│ └── 0e41234f24b6da002d962a26c2495ea16a425f
├── info
└── pack
執(zhí)行 git add 后:
1、git 會(huì)將工作區(qū)中的文件使用 hash sha-1 算法得到 40 位的 blob 對(duì)象 hash 字符串文件,文件中存儲(chǔ)的是文件類型和使用算法壓縮后的內(nèi)容,如果查看文件的原始內(nèi)容,需要使用?git cat-file -p <hash>
。這個(gè)文件存放在?.git/objects
?目錄下
?
2、git 會(huì)在?.git/index
?文件中增加一行內(nèi)容,就是 hash 值對(duì)應(yīng)的文件名。此時(shí)就實(shí)現(xiàn)了文件名和內(nèi)容相對(duì)應(yīng)的操作
# 查看暫存區(qū)中的文件名
git ls-files
# 查看暫存區(qū)中的文件更多信息
git ls-files -s
100644 指的是文件權(quán)限,hash 字符串對(duì)應(yīng) .git/objects 目錄下的文件
查看 hash 文件文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-789006.html
# 查看文件類型
git cat-file -t <hash>
# 查看文件內(nèi)容
git cat-file -p <hash>
# 使用示例
git cat-file -t 8d0e412
git cat-file -p 8d0e412
git cat-file -t
?查看文件類型的返回值文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-789006.html
類型 | 描述 |
---|---|
blob | 存儲(chǔ)的是工作區(qū)文件的內(nèi)容 |
tree | 工作樹(shù) |
commit | 提交記錄信息以及工作樹(shù) |
到了這里,關(guān)于git add 命令詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!