暫存區文件刪除
暫存區存在一個文件hello.txt,我們需要從暫存區刪除這個文件,但是工作區文件不能刪除。
暫存區存在一個文件hello.txt,我們需要從暫存區刪除這個文件,並且同時刪除工作區文件。
我們暫存區有多個文件,需要同時清空整個暫存區。
只清除暫存區的某個文件
在git暫存區有多個文件,如果我們只想要從暫存區刪除其中一個文件,那我們可以使用命令:
git rm --cached hello.txt
在git暫存區有多個文件,如果我們只想要從暫存區刪除其中一個文件,並且將這個文件同時從工作目錄刪除,那我們可以使用命令:
git rm -f hello.txt
清空暫存區
清空暫存區所有緩存文件,可以刪除版本庫的index文件,就可以達到清空暫存區的目的,可以使用命令:
rm .git/index
可以看到,我先將文件添加到暫存區,然後修改文件新增一句話,再次使用git status命令查看暫存區狀態提示hello.txt文件被修改,這時候我選擇git commit提交,再次查看狀態一樣提示hello.txt文件被修改,所以證明我們工作區所做的修改並沒有被真正提交,提交的一樣是暫存區的舊版本。
撤銷修改
有朋友看到這個標題撤銷修改,會納悶撤銷修改不就是將文件從暫存區刪除,剛纔已經提到過了,但是如果我們需要撤銷工作區的修改呢,也就是將hello.txt撤銷修改回退到上一次提交的版本如何做呢?實際上我們git add後使用git status命令
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: hello.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
project/
scoreInfo.txt
$ git status
On branch master
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: hello.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
project/
scoreInfo.txt
可以看到再次提示可以使用git restore hello.txt撤銷工作區的修改回退到上一次提交的版本,再次使用這個命令你個發現我們剛纔工作區所做的修改果然全部丟失了。那如果我們想要放棄暫存區的修改並且同時回退工作區文件的修改,執行兩次命令固然沒問題,但是這時候我們可以使用一個命令直接實現:
git checkout -- hello.txt
可以看到我們一共提交了三次修改,生成了3個commit_id,我們可以看到每一次提交的備註,然後找到我們需要回退版本的commit_id,取到了commit_id之後我們就可以實現版本回退,使用命令:
git reset --hard HEAD^
git reset --hard commit_id
也就是我們只需要傳對應版本的commit_id就可以實現版本回退到對應的版本,而要查詢舊版本的commit_id剛纔說過了使用git log就可以實現。
本文分享自微信公衆號 - 程序猿周先森(zhanyue_org)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。