4、打開test.txt,向其中加入些內(nèi)容,保存。
Hello world
其實就多了world這個字符串。再次用git status查看文件狀態(tài)。
除了之前的“Changes to be committed”狀態(tài),還多了“Changes not staged for commit”狀態(tài),表明文件已經(jīng)被修改,但修改還沒有放入暫存區(qū)域,也就是沒生成快照。如果此時進(jìn)行commit操作,只會提交"Hello",忽略 “world”。
根據(jù)提示,如果想把最新的修改“Hello world”提交到倉庫,需要再次使用命令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的一個同義詞,這樣在語義上更符合上面的Changes not staged for commit。為什么要增加stage呢?
1、分批提交,降低commit的粒度。
2、文件快照,便于回退。
如果一次提交過多文件,對后續(xù)的回滾或跟進(jìn)無疑非常不利,對問題的定位也不便,體驗過估計清楚的。比如你做了兩個功能A和B,對應(yīng)的文件修改分別是a1.java, a2.java; b1.java, b2.java,提交時就可以這樣:
git stage a1.java a2.java git commit -m "功能A"
git stage b1.java b2.java git commit -m "功能B"
同時,每次修改后stage,任何時刻,都可以回到上一次staged的狀態(tài):
git checkout -- test.txt
如果想從stage中刪除,則使用reset
git reset test.txt
這個命令就是git stage test.txt的反操作。
![]() | ![]() .. 定價:¥45 優(yōu)惠價:¥42 更多書籍 |
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |