4、打開test.txt,向其中加入些內(nèi)容,保存。
Hello world
其實(shí)就多了world這個(gè)字符串。再次用git status查看文件狀態(tài)。
除了之前的“Changes to be committed”狀態(tài),還多了“Changes not staged for commit”狀態(tài),表明文件已經(jīng)被修改,但修改還沒有放入暫存區(qū)域,也就是沒生成快照。如果此時(shí)進(jìn)行commit操作,只會(huì)提交"Hello",忽略 “world”。
根據(jù)提示,如果想把最新的修改“Hello world”提交到倉(cāng)庫(kù),需要再次使用命令git add test.txt;如果想撤銷修改,即只想提交“Hello”,可以使用git checkout -- test.txt,再次git status,則可以看到狀態(tài)又改變了。
總結(jié):所以,在文件未進(jìn)行commit操作之前,存在三種狀態(tài):Untracked files, Changes not staged for commit, Changes to be committed. 每種狀態(tài)可以隨意轉(zhuǎn)換。
--------------------------------------------------------------------------------------------------------
題外話
--------------------------------------------------------------------------------------------------------
在git的后續(xù)版本中,添加了git stage作為git add的一個(gè)同義詞,這樣在語(yǔ)義上更符合上面的Changes not staged for commit。為什么要增加stage呢?
1、分批提交,降低commit的粒度。
2、文件快照,便于回退。
如果一次提交過(guò)多文件,對(duì)后續(xù)的回滾或跟進(jìn)無(wú)疑非常不利,對(duì)問題的定位也不便,體驗(yàn)過(guò)估計(jì)清楚的。比如你做了兩個(gè)功能A和B,對(duì)應(yīng)的文件修改分別是a1.java, a2.java; b1.java, b2.java,提交時(shí)就可以這樣:
git stage a1.java a2.java git commit -m "功能A"
git stage b1.java b2.java git commit -m "功能B"
同時(shí),每次修改后stage,任何時(shí)刻,都可以回到上一次staged的狀態(tài):
git checkout -- test.txt
如果想從stage中刪除,則使用reset
git reset test.txt
這個(gè)命令就是git stage test.txt的反操作。
2015職稱計(jì)算機(jī)考試書PowerPoint2007中 .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書籍 | |
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |