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


轉自https://www.cnblogs.com/cposture/p/git.html

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM