git文件的生命周期

工作目錄下的文件有兩種狀態(tài):untrack(未跟蹤)和已跟蹤(tracked).

未跟蹤文件是指在上次快照中沒(méi)有記錄,在下次要提交的快照即暫緩區(qū)也沒(méi)有記錄的文件。

已跟蹤文件是指已被納入版本控制的文件,可以是已上傳到遠(yuǎn)程倉(cāng)庫(kù)的文件,可以是已修改但未暫緩區(qū)的文件,可以是放入暫緩區(qū)的文件。

從遠(yuǎn)程倉(cāng)庫(kù)克隆一個(gè)項(xiàng)目到本地,剛克隆下來(lái)時(shí),所有的文件都未被修改,是最初始的狀態(tài),因?yàn)槲募家言谶h(yuǎn)程倉(cāng)庫(kù),所以此時(shí)文件屬于已跟蹤狀態(tài)。

當(dāng)對(duì)某個(gè)文件做了修改之后,git將這些文件標(biāo)記為已修改的文件,然后放入暫緩區(qū),然后提交暫緩區(qū)的快照。

文件生命周期如下圖:


git status :用來(lái)查看文件狀態(tài)的命令

以一個(gè)例子來(lái)說(shuō)明:

首先,從遠(yuǎn)程克隆一個(gè)項(xiàng)目到本地:git clone ?url ? ? ? ?#git倉(cāng)庫(kù)地址

1.剛克隆下來(lái)時(shí),文件狀態(tài)查看?


剛克隆完文件狀態(tài)

此時(shí),暫緩區(qū)無(wú)文件,無(wú)文件被修改,所有文件都是已跟蹤狀態(tài)。

2.創(chuàng)建一個(gè)不存在的新文件test.txt,查看此時(shí)文件狀態(tài)


可見(jiàn),文件在untracked files下面,處于未被跟蹤的狀態(tài),紅色顯示。未跟蹤意味著之前的快照提交記錄中沒(méi)有這個(gè)文件,git不會(huì)自動(dòng)講從未跟蹤過(guò)的文件自動(dòng)添加到暫緩區(qū),需要手動(dòng)告訴它需要跟蹤這個(gè)文件。當(dāng)然,如果不需要跟蹤,就不需要告訴它。添加到暫緩區(qū)需要用到命令 git add ?文件


此時(shí),文件出現(xiàn)在changes to be committed,說(shuō)明是已被跟蹤狀態(tài)(屬于已修改未提交,處于暫緩區(qū)的情況),綠色顯示。這些文件將在下一次快照提交時(shí)提交。

3.處在暫緩區(qū)的文件提交

git commit是提交暫存區(qū)的文件快照。commit完之后查看文件狀態(tài)


文件全部已跟蹤(已提交到git存儲(chǔ)庫(kù),但未推送到倉(cāng)庫(kù)),但是根據(jù)提示還未推送,推送完成即可永久保留在遠(yuǎn)程倉(cāng)庫(kù)中。

4.文件被跟蹤過(guò),本次版本做了修改


該文件已被跟蹤,在歷史版本快照中有記錄,做了修改后,可見(jiàn)在 changes not staged for commit下面。說(shuō)明,文件內(nèi)容做了修改但是未存到暫存區(qū),屬于已跟蹤未放到暫存區(qū)(not staged)??墒褂胓it add將文件放到暫存區(qū)。所以,git add可以用來(lái)跟蹤新文件,也可以把已跟蹤文件放到暫存區(qū)。

5.文件推送到git倉(cāng)庫(kù)

git push origin master

推送完成后在遠(yuǎn)程倉(cāng)庫(kù)可看到新增的文件,git status 查看此時(shí)狀態(tài)


工作目錄非常干凈,暫緩區(qū)無(wú)文件,無(wú)文件被修改,所有文件都是已跟蹤狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容