Git Bash誤刪除工作區(qū)文件后如何恢復

對于刪除操作卡者,git中有兩條命令蒿囤,rm和git rm,都可以刪除工作區(qū)中的文件崇决,但是刪除的方式還是不一樣蟋软,今天我們主要探討兩個問題:
1 、這兩條命令有什么區(qū)別嗽桩?
2、使用這兩條命令刪除文件后發(fā)現誤刪除了凄敢,該如何進行恢復呢碌冶?
為了更好的理解這兩個問題,我們先回顧一下有關工作區(qū)涝缝、暫存區(qū)的概念扑庞。

工作區(qū)(Working Directory)
就是你在電腦里能看到的目錄,比如我的testgit文件夾就是一個工作區(qū)拒逮。

working directory.png

版本庫(Repository)
工作區(qū)有一個隱藏目錄.git罐氨,這個不算工作區(qū),而是Git的版本庫滩援。
Git的版本庫里存了很多東西栅隐,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master玩徊,以及指向master的一個指針叫HEAD租悄。

0.jpg

我們把文件往Git版本庫里添加的時候,是分兩步執(zhí)行的:
第一步:用git add把文件添加進去恩袱,實際上就是把文件修改添加到暫存區(qū)泣棋;
第二步:用git commit提交更改,實際上就是把暫存區(qū)的所有內容提交到當前分支畔塔。
一句話理解就是把需要提交的文件修改統(tǒng)統(tǒng)放到暫存區(qū)潭辈,然后一次性提交暫存區(qū)的所有修改。
回到最初的兩個問題:rm 和 git rm 命令的區(qū)別以及誤刪之后如何恢復澈吨?
在進行刪除實驗之前把敢,我們先創(chuàng)建一個test.txt文件到工作區(qū)gittest文件夾,然后添加到Repository中棚辽。
step1:在gittest文件夾下新建文本文件test.txt(前提是gittest已經設置為git可以管理的倉庫)

test.png

step2:git add:把文件添加到暫存區(qū)

git add.png

step3:git commit:把暫存區(qū)的文件修改提交到當前分支master

git commit.png

1.使用rm命令刪除test.txt
命令:rm test.txt


git rm.png

然后工作區(qū)的test.txt果然被刪除了技竟。
使用命令:git status 查看操作結果。
發(fā)現 Changes not staged for commit: 這句話的意思是rm test.txt這個刪除操作刪除了工作區(qū)的test.txt文件屈藐,但是并沒有添加到暫存區(qū)榔组。對于沒有添加到暫存區(qū)的刪除操作熙尉,我們如何恢復文件呢?答案就在git status 下的提示信息:use git checkout -- test.txt 撤銷工作區(qū)的刪除操作搓扯。
運行 git checkout -- test.txt發(fā)現test.txt文件又恢復了检痰。

checkout.png

2.使用git rm 命令刪除test.txt
運行 git rm test.txt
運行 git status

git rm2.png

發(fā)現test.txt文件被刪除。
根據git status 的提示信息:Changes to be commited锨推,這句話的意思是刪除操作已經放到暫存區(qū)铅歼,等待提交到分支。而比較前面rm 刪除操作并沒有提交到暫存區(qū)换可。那么對于提交到暫存區(qū)的刪除操作如何恢復文件呢椎椰?
兩步:
step1:命令:git reset head test.txt 可以把暫存區(qū)的修改撤銷掉
git status 查看操作結果發(fā)現 Changes not staged for commit,意思是暫存區(qū)的刪除操作已經撤銷。但是這一步文件還沒有恢復喲沾鳄。

reet.png

step2: 命令:git checkout -- test.txt 可以工作區(qū)的修改撤銷掉
這時候文件才真正的恢復了慨飘。

claean.png

總結:
1:rm 和 git rm命令都可以刪除工作區(qū)文件,但是rm不會將修改提交到暫存區(qū)译荞,所以恢復時只需要使用命令git checkout -- test.txt撤銷工作區(qū)的刪除即可瓤的。
2:git rm 會把刪除提交到暫存區(qū),所以恢復文件需要兩步吞歼,先使用命令git reset head test.txt 撤銷暫存區(qū)操作圈膏,再使用命令git checkout -- test.txt撤銷工作區(qū)的刪除即可。
3:$ git checkout -- file
這個命令可以讓我們丟棄工作區(qū)的修改篙骡,如:
$ git checkout -- test.txt
這個的意思就是把test.txt文件在工作區(qū)的修改撤銷稽坤。
4:假如現在你沒有提交commit,但是已經git add加入到了暫存區(qū)医增,當你的文件需要撤銷時慎皱,這時Git提供了一個命令
git reset HEAD file
用命令git reset HEAD file可以把暫存區(qū)的修改撤銷掉。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末叶骨,一起剝皮案震驚了整個濱河市茫多,隨后出現的幾起案子,更是在濱河造成了極大的恐慌忽刽,老刑警劉巖天揖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異跪帝,居然都是意外死亡今膊,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門伞剑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斑唬,“玉大人,你說我怎么就攤上這事∷×酰” “怎么了缤谎?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長褐着。 經常有香客問我坷澡,道長,這世上最難降的妖魔是什么含蓉? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任频敛,我火速辦了婚禮,結果婚禮上馅扣,老公的妹妹穿的比我還像新娘斟赚。我一直安慰自己,他們只是感情好差油,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布汁展。 她就那樣靜靜地躺著,像睡著了一般厌殉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侈咕,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天公罕,我揣著相機與錄音,去河邊找鬼耀销。 笑死楼眷,一個胖子當著我的面吹牛,可吹牛的內容都是我干的熊尉。 我是一名探鬼主播罐柳,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狰住!你這毒婦竟也來了张吉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤催植,失蹤者是張志新(化名)和其女友劉穎肮蛹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體创南,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡伦忠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了稿辙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆码。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出赋咽,到底是詐尸還是另有隱情旧噪,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布冬耿,位于F島的核電站舌菜,受9級特大地震影響,放射性物質發(fā)生泄漏亦镶。R本人自食惡果不足惜日月,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缤骨。 院中可真熱鬧爱咬,春花似錦、人聲如沸绊起。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虱歪。三九已至蜂绎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笋鄙,已是汗流浹背师枣。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萧落,地道東北人践美。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像找岖,于是被迫代替她去往敵國和親陨倡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容