專業(yè) 網(wǎng)站設(shè)計(jì)公司外貿(mào)網(wǎng)站seo教程
文件的狀態(tài)分類
Git 中文件的狀態(tài)主要分為以下幾種:
-
Untracked(未跟蹤)
-
定義:這些文件從未被 Git 跟蹤過,通常是因?yàn)樗鼈兪切聞?chuàng)建的文件,或者被
.gitignore
排除在外。 -
示例:新創(chuàng)建的文件
newfile.txt
,或者被.gitignore
排除的文件temp.log
。
-
-
Tracked(被跟蹤)
-
定義:這些文件已經(jīng)被 Git 添加到版本控制中,Git 會(huì)記錄它們的修改。
-
進(jìn)一步分類:
-
Unmodified(未修改):文件自上次提交后沒有被修改。
-
Modified(已修改):文件自上次提交后被修改了,但尚未添加到暫存區(qū)。
-
Staged(已暫存):文件被修改后,通過
git add
添加到暫存區(qū),準(zhǔn)備提交。
-
-
? ? ? ? ? ? ? ? 3. git ls-files?
? ? ? ? ? ? ? ? ? ? ? ? 這個(gè)命令用于顯示已經(jīng)被跟蹤的文件,包括加入暫存區(qū)和已經(jīng)提交的.
在 Git 中,文件的狀態(tài)是指文件相對(duì)于 Git 倉庫的當(dāng)前情況。以下是一些常見的文件狀態(tài)及其含義:
-
未跟蹤(Untracked):
-
這是新創(chuàng)建的文件或從其他位置復(fù)制過來的文件,Git 還沒有開始跟蹤這些文件的更改。
-
這些文件不會(huì)出現(xiàn)在
git status
命令的 "Changes to be committed" 部分,而是出現(xiàn)在 "Untracked files" 部分。
-
-
已修改(Modified):
-
文件已經(jīng)被修改,但還沒有添加到暫存區(qū)。
-
這些文件出現(xiàn)在
git status
命令的 "Changes not staged for commit" 部分。
-
-
已暫存(Staged):
-
文件的修改已經(jīng)被添加到暫存區(qū),準(zhǔn)備在下一次提交時(shí)被保存到倉庫歷史記錄中。
-
這些文件出現(xiàn)在
git status
命令的 "Changes to be committed" 部分。
-
-
已提交(Committed):
-
文件的更改已經(jīng)被提交到本地倉庫,成為倉庫歷史記錄的一部分。
-
提交后的文件不再出現(xiàn)在
git status
命令的輸出中,除非你再次修改它。
-
文件狀態(tài)的切換:
-
未跟蹤(Untracked)-> 已暫存(Staged):
-
使用
git add <file>
命令將未跟蹤的文件添加到暫存區(qū)。 -
或者,使用
git add .
命令將所有未跟蹤的文件和已修改的文件添加到暫存區(qū)。
-
-
已修改(Modified)-> 已暫存(Staged):
-
使用
git add <file>
命令將已修改的文件添加到暫存區(qū)。
-
-
已暫存(Staged)-> 已修改(Modified):
-
使用
git reset <file>
命令將已暫存的文件從暫存區(qū)移除,使其回到已修改狀態(tài)。
-
-
已暫存(Staged)-> 未跟蹤(Untracked):
-
這種情況通常不會(huì)發(fā)生,因?yàn)槲募坏┍惶砑拥綍捍鎱^(qū),Git 就開始跟蹤它了。但是,你可以使用
git rm --cached <file>
命令從暫存區(qū)和 Git 倉庫中刪除文件,使其回到未跟蹤狀態(tài)。
-
-
已修改(Modified)-> 未跟蹤(Untracked):
-
這種情況也不會(huì)發(fā)生,因?yàn)槲募坏┍恍薷?#xff0c;Git 就開始跟蹤它了。但是,你可以使用
git checkout -- <file>
命令將文件恢復(fù)到最后一次提交的狀態(tài),或者使用git rm <file>
命令從工作目錄中刪除文件。
-
-
已提交(Committed)-> 已修改(Modified):
-
修改已提交的文件,使其成為已修改狀態(tài)。
-
-
已提交(Committed)-> 未跟蹤(Untracked):
-
刪除已提交的文件,使其成為未跟蹤狀態(tài)。
-
具體狀態(tài)解釋
Changes not staged for commit(已修改但未暫存)
-
狀態(tài):Modified(已修改)
-
含義:這些文件已經(jīng)被 Git 跟蹤(即之前被添加到版本控制中),但自上次提交后被修改了,且尚未通過
git add
添加到暫存區(qū)。 -
示例:
bash復(fù)制
git status
輸出:
復(fù)制
On branch main Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: README.md
這里,
README.md
是一個(gè)被跟蹤的文件,但它被修改了,且尚未暫存。
Changes to be committed(已暫存)
-
狀態(tài):Staged(已暫存)
-
含義:這些文件已經(jīng)被修改,并且通過
git add
添加到了暫存區(qū),準(zhǔn)備在下一次提交時(shí)被記錄到版本歷史中。 -
示例:
bash復(fù)制
git add README.md git status
輸出:
復(fù)制
On branch main Changes to be committed:(use "git reset HEAD <file>..." to unstage)modified: README.md
這里,
README.md
已經(jīng)被修改并暫存,準(zhǔn)備提交。
狀態(tài)轉(zhuǎn)換
-
從 Untracked 到 Tracked(通過
git add
)-
新文件
newfile.txt
是未跟蹤的。 -
使用
git add newfile.txt
后,文件進(jìn)入暫存區(qū)(Staged),并開始被跟蹤。
-
-
從 Tracked 到 Modified
-
文件
README.md
已經(jīng)被跟蹤。 -
如果你修改了
README.md
,但尚未運(yùn)行git add
,文件狀態(tài)變?yōu)?Modified(已修改但未暫存)。
-
-
從 Modified 到 Staged
-
修改后的文件
README.md
處于 Modified 狀態(tài)。 -
使用
git add README.md
后,文件狀態(tài)變?yōu)?Staged(已暫存)。
-
-
從 Staged 到 Committed
-
暫存區(qū)中的文件
README.md
通過git commit
提交后,文件狀態(tài)變?yōu)?Committed(已提交)。
-
總結(jié)
-
Changes not staged for commit:文件已經(jīng)被跟蹤(Tracked),但被修改后尚未暫存(Modified)。
-
Changes to be committed:文件已經(jīng)被跟蹤(Tracked),并且修改后已經(jīng)暫存(Staged)。
-
修改文件內(nèi)容:如果文件已經(jīng)被跟蹤,修改文件內(nèi)容后,文件狀態(tài)會(huì)從 Unmodified 變?yōu)?Modified。通過
git add
添加到暫存區(qū)后,狀態(tài)變?yōu)?Staged。