Git刪除暫存區或版本庫中的檔案

2021-08-31 21:37:45 字數 1852 閱讀 2355

**:

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

(1)開啟你的專案資料夾,除了隱藏的.git資料夾,其他專案檔案位於的地方便是工作區,工作區的檔案需要新增到git的暫存區(git add),隨後再提交到git的版本庫(git commit)。

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

簡單的認識了git的工作流程,接下來便可以看看如何刪除錯誤新增到暫存區或版本庫里的檔案了!

有時你在工作區新建了檔案testfile,並且已經將它新增到了暫存區,git會告知,現有有乙個檔案未提交到版本庫,如下圖:

此時你想撤銷錯誤新增到暫存區裡的檔案,可以輸入以下命令:

git rm --cache 檔名

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

git status
git rm -f 檔名

有時,不僅新增到了暫存區,而且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呢,因為它只是恢復了版本庫,暫存區仍然存在你錯誤提交的檔案索引,還需要進一步使用上一節的刪除錯誤新增到暫存區的檔案,詳細見上文。

Git刪除暫存區或版本庫中的檔案

我們知道git有 三大區 工作區 暫存區 版本庫 以及 幾個狀態 untracked unstaged uncommited 下面只是簡述下git的大概工作流程,詳細的可以參見本部落格的其他有關git的文章 鏈結 1 開啟你的專案資料夾,除了隱藏的.git資料夾,其他專案檔案位於的地方便是工作區,工...

Git 工作區 暫存區 版本庫

工作區 我們會想當然的認為,當前倉庫所在目錄就是我們的工作區,其實這是不完全正確的。在當前倉庫中,新增,更改,刪除檔案這些動作,都發生在工作區裡面。暫存區 英文叫stage,或index。在版本庫.git 目錄下,有乙個index檔案。它實際上就是乙個包含檔案索引的目錄樹,像是乙個虛擬的工作區。在這...

Git 工作區 版本庫 暫存區

tags git 參考部落格 工作區 電腦裡能看到的目錄,就是我們建立的 learngit 資料夾。版本庫 工作區里有乙個隱藏的 git 目錄,這個就是 git 的版本庫。git 的版本庫里存了很多東西,其中最重要的就是稱為 stage 的暫存區,還有 git 為我們自動建立的第乙個分支 maste...