Git刪除暫存區或版本庫中的文件

0 基礎

我們知道Git有 三大區 ( 工作區、暫存區、版本庫 )以及 幾個狀態 ( untracked、unstaged、uncommited ),下面只是簡述下Git的大概工作流程,詳細的可以參見本博客的其他有關Git的文章 【鏈接】 。  

(1)打開你的項目文件夾,除了隱藏的.git文件夾,其他項目文件位於的地方便是工作區,工作區的文件需要添加到Git的暫存區(git add),隨後再提交到Git的版本庫(git commit)。

(2)首次新建的文件都是untracked狀態(未跟蹤),此時需要git add到暫存區,Git便會在暫存區中生成一個該文件的索引,文件此時處於uncommited狀態,需要git commit生成版本庫。添加到了版本庫之後,再對文件進行修改,那麼文件的狀態會變爲unstaged狀態。

簡單的認識了Git的工作流程,接下來便可以看看如何刪除錯誤添加到暫存區或版本庫裏的文件了!

1 刪除錯誤添加到暫存區的文件

有時你在工作區新建了文件TestFile,並且已經將它添加到了暫存區,git會告知,現有有一個文件未提交到版本庫,如下圖:

1.1 僅僅刪除 暫存區裏的文件     

此時你想撤銷錯誤添加到暫存區裏的文件,可以輸入以下命令:

  1. git rm --cache 文件名

上面的命令僅僅刪除暫存區的文件而已,不會影響工作區的文件,如上圖,TestFile.txt仍然存在,此時輸入下面命令,git會告知有一個未跟蹤的文件TestFile.txt。

  1. git status

1.2 刪除暫存區和工作區的文件

  1. git rm -f 文件名

工作區的文件也被刪除了。

    

2 刪除錯誤提交的commit

有時,不僅添加到了暫存區,而且commit到了版本庫,這個時候就不能使用git rm了,需要使用git reset命令。

錯誤提交到了版本庫,此時無論工作區、暫存區,還是版本庫,這三者的內容都是一樣的 ,所以在這種情況下,只是刪除了工作區和暫存區的文件,下一次用該版本庫回滾那個誤添加的文件還會重新生成。

這個時候,我們必須撤銷版本庫的修改才能解決問題!

git reset有三個選項,--hard、--mixed、--soft。

//僅僅只是撤銷已提交的版本庫,不會修改暫存區和工作區
git reset --soft 版本庫ID
//僅僅只是撤銷已提交的版本庫和暫存區,不會修改工作區
git reset --mixed 版本庫ID
//徹底將工作區、暫存區和版本庫記錄恢復到指定的版本庫
git reset --hard 版本庫ID
    那我們到底應該用哪個選項好呢?

(1)如果你是在提交了後,對工作區的代碼做了修改,並且想保留這些修改,那麼可以使用git reset --mixed 版本庫ID,注意這個版本庫ID應該不是你剛剛提交的版本庫ID,而是 剛剛提交版本庫的上一個版本庫 。如下圖:

(2)如果不想保留這些修改,可以直接使用徹底的恢復命令,git reset --hard 版本庫ID。

(3)爲什麼不使用--soft呢,因爲它只是恢復了版本庫, 暫存區仍然存在你錯誤提交的文件索引 ,還需要進一步使用上一節的 刪除錯誤添加到暫存區的文件,詳細見上文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章