當(dāng)我們弄清楚GIT的幾種文件狀態(tài)之后金蜀,這一部分的內(nèi)容就變得簡(jiǎn)單了,我們通過(guò)一個(gè)具體的例子來(lái)了解一下GIT的修改和修改還原的畴。首先創(chuàng)建一個(gè)新的文件夾并且通過(guò)git init
將其設(shè)置為git的工廠渊抄,添加一個(gè)a.txt的文件,使用git add .
將其設(shè)置為Staged狀態(tài)之后通過(guò)git commit -m "first"
將其添加到git的版本庫(kù)中丧裁。這些操作相信大家已經(jīng)能夠熟練的掌握了护桦。
下一步我們修改一下a.txt文件,執(zhí)行git add .
再次將其提交到Staged
狀態(tài)煎娇,此時(shí)我們先不進(jìn)行commit二庵,我們向a.txt中寫(xiě)入一些內(nèi)容贪染,使用git status
看看情況
![git的文件的修改和還原](https://ynkonghao.github.io/img/git/02/13.png)
我們發(fā)現(xiàn)a.txt處于兩種狀態(tài)Staged
和Modified
,這是因?yàn)槲覀兊谝淮涡薷倪M(jìn)行了add之后它變成了Staged
狀態(tài)催享,Index對(duì)這次操作進(jìn)行了記錄杭隙,但此時(shí)再次修改了之后,Index發(fā)現(xiàn)a.txt的內(nèi)容和版本庫(kù)中不一致睡陪,所以也將它的狀態(tài)改為了Modified
狀態(tài)寺渗,此時(shí)進(jìn)行commit操作。
![git的文件的修改和還原](https://ynkonghao.github.io/img/git/02/14.png)
我們發(fā)現(xiàn)兰迫,該文件僅僅只是提交了Staged
狀態(tài)的修改信殊,而Modified
狀態(tài)的文件并沒(méi)有進(jìn)行提交,這再次證明了上一節(jié)課的內(nèi)容汁果,只有Staged
狀態(tài)才能commit到版本庫(kù)中,如果是Modified
狀態(tài)涡拘,需要先通過(guò)add將其設(shè)置為Staged
狀態(tài)(也就是第一講中所說(shuō)的暫存區(qū))。此時(shí)如果我發(fā)現(xiàn)我這次的修改沒(méi)有意義据德,希望a.txt能夠和版本庫(kù)中的內(nèi)容一致鳄乏,只要使用以下命令即可
git checkout a.txt
查詢一下a.txt,我們會(huì)發(fā)現(xiàn)該文件的內(nèi)容已經(jīng)和版本庫(kù)中一樣了棘利。
![git的文件的修改和還原](https://ynkonghao.github.io/img/git/02/15.png)
所以通過(guò)checkout可以很方便的讓自己的文件同步版本庫(kù)中的內(nèi)容橱野,注意使用checkout只能同步modified
狀態(tài)下的內(nèi)容,此時(shí)我們?cè)俅螌?duì)a.txt進(jìn)行修改善玫,并且通過(guò)add進(jìn)行操作之后水援,a.txt的文件狀態(tài)就從Modified
變成了Staged
狀態(tài),我們?cè)賮?lái)使用checkout看看效果茅郎。
![git的文件的修改和還原](https://ynkonghao.github.io/img/git/02/16.png)
此時(shí)我們發(fā)現(xiàn)checkout并不能還原原來(lái)的文件內(nèi)容了(我們將會(huì)在下一講講解git的三種常用組件蜗元,到時(shí)候就知道為什么無(wú)法還原了)。所以我們得到一個(gè)結(jié)論checkout命令并不能還原Staged
狀態(tài)的內(nèi)容系冗,此時(shí)可以通過(guò)
git reset HEAD a.txt
把該文件從Staged
狀態(tài)設(shè)置為Modified
狀態(tài)奕扣,也就是將這個(gè)文件從暫存區(qū)中清除。
![git的文件的修改和還原](https://ynkonghao.github.io/img/git/02/17.png)
之后通過(guò)git checkout a.txt
就可以把內(nèi)容還原了掌敬。
這節(jié)課的內(nèi)容就到這里了惯豆,只要掌握了git的幾種狀態(tài)之后,這個(gè)內(nèi)容非常好理解涝开。下一講將會(huì)講解git最核心的知識(shí)循帐,就是git最常用的三個(gè)組件BLOB、Tree舀武、Commit
拄养。