在 Git 中,刪除也是一個(gè)修改操作,我們實(shí)戰(zhàn)一下,先添加一個(gè)新文件 test.txt 到 Git 并且提交:
$ git add test.txt
$ git commit -m "add test.txt"
[master 94cdc44] add test.txt
1 file changed, 1 insertion(+)
create mode 100644 test.txt
一般情況下,你通常直接在文件管理器中把沒(méi)用的文件刪了,或者用 rm 命令刪了:
$ rm test.txt
這個(gè)時(shí)候,Git 知道你刪除了文件,因此,工作區(qū)和版本庫(kù)就不一致了,git status
命令會(huì)立刻告訴你哪些文件被刪除了:
$ git status
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: test.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
現(xiàn)在你有兩個(gè)選擇,一是確實(shí)要從版本庫(kù)中刪除該文件,那就用命令git rm
刪掉,并且git commit
:
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
現(xiàn)在,文件就從版本庫(kù)中被刪除了。
另一種情況是刪錯(cuò)了,因?yàn)榘姹編?kù)里還有呢,所以可以很輕松地把誤刪的文件恢復(fù)到最新版本:
$ git checkout -- test.txt
git checkout 其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本,無(wú)論工作區(qū)是修改還是刪除,都可以“一鍵還原”。
命令git rm
用于刪除一個(gè)文件。如果一個(gè)文件已經(jīng)被提交到版本庫(kù),那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會(huì)丟失最近一次提交后你修改的內(nèi)容。