教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Git基礎(chǔ):文件的增查刪改操作【使用教程】

更新時(shí)間:2022年09月08日13時(shí)41分 來(lái)源:傳智教育 瀏覽次數(shù):

1.獲取 Git 倉(cāng)庫(kù)的兩種方式

將尚未進(jìn)行版本控制的本地目錄轉(zhuǎn)換為Git倉(cāng)庫(kù),從其它服務(wù)器克隆一個(gè)已存在的Git倉(cāng)庫(kù),這兩種方式都能夠在自己的電腦上得到一個(gè)可用的Git倉(cāng)庫(kù)。

2.在現(xiàn)有目錄中初始化倉(cāng)庫(kù)

如果自己有一個(gè)尚未進(jìn)行版本控制的項(xiàng)目目錄,想要用 Git 來(lái)控制它,需要執(zhí)行如下兩個(gè)步驟:

① 在項(xiàng)目目錄中,通過鼠標(biāo)右鍵打開“Git Bash”

② 執(zhí)行 git init 命令將當(dāng)前的目錄轉(zhuǎn)化為 Git 倉(cāng)庫(kù)

git init 命令會(huì)創(chuàng)建一個(gè)名為 .git 的隱藏目錄,這個(gè) .git 目錄就是當(dāng)前項(xiàng)目的 Git 倉(cāng)庫(kù),里面包含了初始的必要文件,這些文件是 Git 倉(cāng)庫(kù)的必要組成部分。

3.工作區(qū)中文件的4種狀態(tài)

工作區(qū)中的每一個(gè)文件可能有 4 種狀態(tài),這四種狀態(tài)共分為兩大類,如圖所示:

git工作區(qū)的4中狀態(tài)

Git 操作的終極結(jié)果:讓工作區(qū)中的文件都處于“未修改”的狀態(tài)。

4.檢查文件的狀態(tài)

可以使用 git status 命令查看文件處于什么狀態(tài),例如:
Git status檢查文件狀態(tài)

在狀態(tài)報(bào)告中可以看到新建的 index.html 文件出現(xiàn)在 Untracked files(未跟蹤的文件) 下面。未跟蹤的文件意味著 Git 在之前的快照(提交)中沒有這些文件;Git 不會(huì)自動(dòng)將之納入跟蹤范圍,除非明確地告訴它“我需要使用 Git 跟蹤管理該文件”。

5.以精簡(jiǎn)的方式顯示文件狀態(tài)

使用 git status 輸出的狀態(tài)報(bào)告很詳細(xì),但有些繁瑣。如果希望以精簡(jiǎn)的方式顯示文件的狀態(tài),可以使用如下兩條完全等價(jià)的命令,其中 -s 是 --short 的簡(jiǎn)寫形式:

  #以精簡(jiǎn)的方式顯示文件狀態(tài)
  git status -s
  git status --short

未跟蹤文件前面有紅色的 ?? 標(biāo)記,例如
跟蹤文件并標(biāo)記

6.跟蹤新文件

使用命令 git add 開始跟蹤一個(gè)文件。 所以,要跟蹤 index.html 文件,運(yùn)行如下的命令即可:

 git add index.html

此時(shí)再運(yùn)行 git status 命令,會(huì)看到 index.html 文件在 Changes to be committed 這行的下面,說(shuō)明已被跟蹤,并處于暫存狀態(tài):

也可以以精簡(jiǎn)的方式顯示文件的狀態(tài)新添加到暫存區(qū)中的文件前面有綠色的 A 標(biāo)記

7.提交更新

現(xiàn)在暫存區(qū)中有一個(gè) index.html 文件等待被提交到 Git 倉(cāng)庫(kù)中進(jìn)行保存??梢詧?zhí)行 git commit 命令進(jìn)行提交,其中 -m 選項(xiàng)后面是本次的提交消息,用來(lái)對(duì)提交的內(nèi)容做進(jìn)一步的描述:

 git commit-m"新建了index.html文件"

提交成功之后,會(huì)顯示如下的信息:

提交成功之后,再次檢查文件的狀態(tài),得到提示如下:
提交成功提示

證明工作區(qū)中所有的文件都處于“未修改”的狀態(tài),沒有任何文件需要被提交。

提交

8. 對(duì)已提交的文件進(jìn)行修改

目前,index.html 文件已經(jīng)被 Git 跟蹤,并且工作區(qū)和 Git 倉(cāng)庫(kù)中的 index.html 文件內(nèi)容保持一致。當(dāng)我們 修改了工作區(qū)中 index.html 的內(nèi)容之后,再次運(yùn)行 git status 和 git status -s 命令,會(huì)看到如下的內(nèi)容:

文件 index.html 出現(xiàn)在 Changes not staged for commit 這行下面,說(shuō)明已跟蹤文件的內(nèi)容發(fā)生了變化,但還沒有放到暫存區(qū)。

注意:修改過的、沒有放入暫存區(qū)的文件前面有紅色的 M 標(biāo)記。

9.暫存已修改的文件

目前,工作區(qū)中的 index.html 文件已被修改,如果要暫存這次修改,需要再次運(yùn)行 git add 命令,這個(gè)命令 是個(gè)多功能的命令,主要有如下 3 個(gè)功效:

① 可以用它開始跟蹤新文件

② 把已跟蹤的、且已修改的文件放到暫存區(qū)

③ 把有沖突的文件標(biāo)記為已解決狀態(tài)

10.提交已暫存的文件

再次運(yùn)行 git commit -m "提交消息" 命令,即可將暫存區(qū)中記錄的 index.html 的快照,提交到 Git 倉(cāng)庫(kù)中進(jìn)行保存:

11.撤銷對(duì)文件的修改

撤銷對(duì)文件的修改指的是:把對(duì)工作區(qū)中對(duì)應(yīng)文件的修改,還原成 Git 倉(cāng)庫(kù)中所保存的版本。操作的結(jié)果:所有的修改會(huì)丟失,且無(wú)法恢復(fù)!危險(xiǎn)性比較高,請(qǐng)慎重操作!

撤銷操作的本質(zhì):用 Git 倉(cāng)庫(kù)中保存的文件,覆蓋工作區(qū)中指定的文件。

12.向暫存區(qū)中一次性添加多個(gè)文件

如果需要被暫存的文件個(gè)數(shù)比較多,可以使用如下的命令,一次性將所有的新增和修改過的文件加入暫存區(qū):

git add

今后在項(xiàng)目開發(fā)中,會(huì)經(jīng)常使用這個(gè)命令,將新增和修改過后的文件加入暫存區(qū)。

13.取消暫存的文件

如果需要從暫存區(qū)中移除對(duì)應(yīng)的文件,可以使用如下的命令:

git reset HEAD 要移除的文件名稱

14.跳過使用暫存區(qū)域

Git 標(biāo)準(zhǔn)的工作流程是工作區(qū) → 暫存區(qū) → Git 倉(cāng)庫(kù),但有時(shí)候這么做略顯繁瑣,此時(shí)可以跳過暫存區(qū),直接將工作區(qū)中的修改提交到 Git 倉(cāng)庫(kù),這時(shí)候 Git 工作的流程簡(jiǎn)化為了工作區(qū) → Git 倉(cāng)庫(kù)。

Git 提供了一個(gè)跳過使用暫存區(qū)域的方式, 只要在提交的時(shí)候,給 git commit 加上 -a 選項(xiàng),Git 就會(huì)自動(dòng)把所有已經(jīng)跟蹤過的文件暫存起來(lái)一并提交,從而跳過 git add 步驟:

git commit -a -m“描述消息"

15.移除文件

從Git 倉(cāng)庫(kù)中移除文件的方式有兩種,從 Git 倉(cāng)庫(kù)和工作區(qū)中同時(shí)移除對(duì)應(yīng)的文件和只從Git倉(cāng)庫(kù)中移除指定的文件,但保留工作區(qū)中對(duì)應(yīng)的文件。

#從 Git倉(cāng)庫(kù)和工作區(qū)中同時(shí)移除index.js 文件
git rm -f index.js
#A從Git倉(cāng)庫(kù)中移除 index.css,但保留工作區(qū)中的index.css文件
git rm --cached index.css

16.忽略文件

一般我們總會(huì)有些文件無(wú)需納入 Git 的管理,也不希望它們總出現(xiàn)在未跟蹤文件列表。 在這種情況下,我們可

以創(chuàng)建一個(gè)名為 .gitignore 的配置文件,列出要忽略的文件的匹配模式。文件 .gitignore 的格式規(guī)范如下:

① 以 # 開頭的是注釋

② 以 / 結(jié)尾的是目錄

③ 以 / 開頭防止遞歸

④ 以 / 開頭表示取反

⑤ 可以使用 glob 模式進(jìn)行文件和文件夾的匹配(glob 指簡(jiǎn)化了的正則表達(dá)式)。

17.glob 模式

所謂的 glob 模式是指簡(jiǎn)化了的正則表達(dá)式:

① 星號(hào) * 匹配零個(gè)或多個(gè)任意字符。

② [abc] 匹配任何一個(gè)列在方括號(hào)中的字符 (此案例匹配一個(gè) a 或匹配一個(gè) b 或匹配一個(gè) c)。

③ 問號(hào) ? 只匹配一個(gè)任意字符。

④ 在方括號(hào)中使用短劃線分隔兩個(gè)字符, 表示所有在這兩個(gè)字符范圍內(nèi)的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數(shù)字)。

⑤ 兩個(gè)星號(hào) ** 表示匹配任意中間目錄(比如 a/**/z 可以匹配 a/z 、 a/b/z 或 a/b/c/z 等)。

18. .gitignore 文件的例子

#忽略所有的.a文件
*.a

#但跟蹤所有的1ib.a,即便你在前面忽略了.a文件
!lib.a

二只忽略當(dāng)前目錄下的 TODO文件,而不忽略 subdir/TODO
/TOD0

#忽略任何目錄下名為build的文件夾
build/

#忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt

# 忽略doc/ 目錄及其所有子目錄下的.pdf文件
doc/**/*.pdf

19.查看提交歷史

如果希望回顧項(xiàng)目的提交歷史,可以使用 git log 這個(gè)簡(jiǎn)單且有效的命令。

#按時(shí)間先后順序列出所有的提交歷史,最近的提交排在最上面
git log

#只展示最新的兩條提交歷史,數(shù)字可以按需進(jìn)行填寫
git log -2

# 在一行上展示最近兩條提交歷史的信息
git log -2 --pretty=oneline

# 在一行上展示最近兩條提交歷史的信息,并自定義輸出的格式
# %h 提交的簡(jiǎn)寫哈希值  %an作者名字  %ar作者修訂日期,按多久以前的方式顯示   %s提交說(shuō)明
git log -2 --pretty=format:"%h | %an | %ar | %s"

20.回退到指定的版本

#在一行上展示所有的提交歷史
git log --pretty=oneline

#使用 git reset--hard命令,根據(jù)指定的提交ID 回退到指定版本
git reset --hard <CommitID>

#在舊版本中使用git reflog--pretty=oneline 命令,查看命令操作的歷史
git reflog --pretty=oneline

#再次根據(jù)最新的提交ID,跳轉(zhuǎn)到最新的版本
git reset --hard <CommitID>
0 分享到:
和我們?cè)诰€交談!