【Git】Git 本地的撤銷修改和刪除操作


一:撤銷操作

比如我現在在readme.txt文件里面增加一行 內容為555555555555,我們先通過命令查看如下: 


這里寫圖片描述

在我未提交之前,我發現添加5555555555555內容有誤,所以我得馬上恢復以前的版本,現在我可以有如下幾種方法可以做修改: 


第一:如果我知道要刪掉那些內容的話,直接手動更改去掉那些需要的文件,然后add添加到暫存區,最后commit掉。 


第二:我可以按以前的方法直接恢復到上一個版本。使用 git reset –hard HEAD^ 


但是現在我不想使用上面的2種方法,我想直接想使用撤銷命令該如何操作呢?首先在做撤銷之前,我們可以先用 git status 查看下當前的狀態。如下所示:

這里寫圖片描述 


可以發現,Git會告訴你,git checkout — file 可以丟棄工作區的修改,如下命令: 


git checkout – readme.txt,如下所示:

這里寫圖片描述 


命令 git checkout –readme.txt 意思就是,把readme.txt文件在工作區做的修改全部撤銷,這里有2種情況,如下:

  1. readme.txt自動修改后,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態。

  2. 另外一種是readme.txt已經放入暫存區了,接着又作了修改,撤銷修改就回到添加暫存區后的狀態。

    其實也就是撤銷到最后一次沒有放入暫存區的狀態。 


    對於第二種情況,我想我們繼續做demo來看下,假如現在我對readme.txt添加一行 內容為6666666666666,我git add 增加到暫存區后,接着添加內容7777777,我想通過撤銷命令讓其回到暫存區后的狀態。如下所示: 


    這里寫圖片描述


    注意:命令git checkout — readme.txt 中的 — 很重要,如果沒有 — 的話,那么命令變成創建分支了。 


git checkout -- * 是撤銷從上次提交之后所做的所有修改

git checkout -- filaname 是撤銷從上次提交之后的單個文件的修改

 

二:刪除文件。

假如我現在版本庫testgit目錄添加一個文件b.txt,然后提交。如下: 


這里寫圖片描述 


如上:一般情況下,可以直接在文件目錄中把文件刪了,或者使用如上rm命令:rm b.txt ,如果我想徹底從版本庫中刪掉了此文件的話,可以再執行commit命令 提交掉,現在目錄是這樣的 


這里寫圖片描述 


只要沒有commit之前,如果我想在版本庫中恢復此文件如何操作呢? 


可以使用如下命令 git checkout — b.txt,如下所示:

這里寫圖片描述 


再來看看我們testgit目錄,添加了3個文件了。如下所示:

這里寫圖片描述

 

三、干凈的回退到上次提交之后的東西:

我查了下有兩個相關的命令:
1. git clean -df
2. git reset --hard
但問題是第一個命令只刪除所有untracked的文件,如果文件已經被tracked, 修改過的文件不會被回退。而第二個命令只把tracked的文件revert到前一個版本,對於untracked的文件(比如編譯的臨時文件)都不會被刪除。

 

如果你有的修改以及加入暫存區的話 
那么 
git reset --hard 
git clean -xdf 

 

如果沒有加入暫存區的話 :(下面這個起效)

git checkout . && git clean -xdf

 

注意:git checkout -f 這條命令不會刪除新增的文件

 

 

git clean 小結

刪除 一些 沒有 git add 的 文件;

git clean 參數

    -n 顯示 將要 刪除的 文件 和  目錄

     -f 刪除 文件,-df 刪除 文件 和 目錄



git clean -n

git clean -df

git clean -f

 


免責聲明!

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



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