git | Git撤銷(xiāo)修改和刪除文件操作。

撤銷(xiāo)修改

比如我現(xiàn)在在readme.txt文件里面增加一行 內(nèi)容為5555,我們先通過(guò)命令查看如下:

添加了5555

在我未提交之前,我發(fā)現(xiàn)添加5555內(nèi)容有誤,所以我得馬上恢復(fù)以前的版本,現(xiàn)在我可以有如下幾種方法可以做修改:
第一:如果我知道要?jiǎng)h掉那些內(nèi)容的話,直接手動(dòng)更改去掉那些需要的文件,然后add添加到暫存區(qū),最后commit掉。
第二:我可以按以前的方法直接恢復(fù)到上一個(gè)版本。使用 git reset –hard HEAD^
但是現(xiàn)在我不想使用上面的2種方法,我想直接想使用撤銷(xiāo)命令該如何操作呢?首先在做撤銷(xiāo)之前,我們可以先用 git status查看下當(dāng)前的狀態(tài)。如下所示:

查看一下?tīng)顟B(tài)

可以發(fā)現(xiàn),Git會(huì)告訴你,git checkout -- file可以丟棄工作區(qū)的修改,如下命令:git checkout -- readme.txt,命令 git checkout -- readme.txt 意思就是,把readme.txt文件在工作區(qū)做的修改全部撤銷(xiāo),這里有2種情況:
一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在,撤銷(xiāo)修改就回到和版本庫(kù)一模一樣的狀態(tài);
一種是readme.txt已經(jīng)添加到暫存區(qū)后,又做了修改,現(xiàn)在,撤銷(xiāo)修改就回到添加到暫存區(qū)后的狀態(tài)。
總之,就是讓這個(gè)文件回到最近一次git commitgit add時(shí)的狀態(tài)。

這是第一種情況,修改了之后還未提交

【特別提示:git checkout -- file命令中的--很重要,沒(méi)有--,就變成了“切換到另一個(gè)分支”的命令,我們?cè)诤竺娴姆种Ч芾碇袝?huì)再次遇到git checkout命令。】

這是第二種情況,已經(jīng)add,又做了修改

第二種情況,添加了內(nèi)容,還git add到暫存區(qū)了,不同的是,還沒(méi)有添加其他的內(nèi)容,也還沒(méi)有commit(也就是錯(cuò)誤的添加了6666,然后將6666放到了暫存區(qū)內(nèi)):,

可以用reset HEAD readme.txt

Git同樣告訴我們,用命令git reset HEAD file可以把暫存區(qū)的修改撤銷(xiāo)掉(unstage),重新放回工作區(qū):

用reset撤銷(xiāo)

git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時(shí),表示最新的版本。
再用git status查看一下,現(xiàn)在暫存區(qū)是干凈的,工作區(qū)有修改:

現(xiàn)在的狀態(tài)

還記得如何丟棄工作區(qū)的修改嗎?

$ git checkout -- readme.txt
$ git status
工作區(qū)的修改也沒(méi)了,變成最初的4444了

現(xiàn)在,假設(shè)你不但改錯(cuò)了東西,還從暫存區(qū)提交到了版本庫(kù),怎么辦呢?還記得版本回退那一節(jié)嗎?可以回退到上一個(gè)版本。不過(guò),這是有條件的,就是你還沒(méi)有把自己的本地版本庫(kù)推送到遠(yuǎn)程【敲重點(diǎn),只是commit,還沒(méi)有推到遠(yuǎn)程倉(cāng)庫(kù)里】。還記得Git是分布式版本控制系統(tǒng)嗎?我們后面會(huì)講到遠(yuǎn)程版本庫(kù),一旦你把“錯(cuò)誤的消息”提交推送到遠(yuǎn)程版本庫(kù),你就真的慘了……
<br >
【小結(jié)】
場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- file。
場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場(chǎng)景1,第二步按場(chǎng)景1操作。
如果添加到暫存區(qū)后,又做了新的修改,用git checkout -- file回到添加到暫存區(qū)后的狀態(tài),也就是場(chǎng)景2剛開(kāi)始那種情況。然后再按照?qǐng)鼍?剛開(kāi)始的情況進(jìn)行操作。
場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)(已經(jīng)commit了)時(shí),想要撤銷(xiāo)本次提交,參考<u>版本回退</u>一節(jié),不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)。


刪除文件

假如我現(xiàn)在版本庫(kù)learngit目錄添加一個(gè)文件b.txt,然后提交。如下:

做了好多操作啊

一般情況下,可以直接在文件目錄中把文件刪了,或者使用如上rm命令:rm b.txt ,如果我想徹底從版本庫(kù)中刪掉了此文件的話,可以再執(zhí)行commit命令提交掉git commit -m "remove test.txt",現(xiàn)在目錄是這樣的

此時(shí)的目錄

只要沒(méi)有commit之前,如果我想在版本庫(kù)中恢復(fù)此文件如何操作呢?
可以使用如下命令git checkout -- b.txt,如下所示:

b.txt文件被恢復(fù)了

【小結(jié)】
命令git rm用于刪除一個(gè)文件。如果一個(gè)文件已經(jīng)被提交到版本庫(kù),那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會(huì)丟失<b>最近一次提交后你修改的內(nèi)容。</b>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,813評(píng)論 4 54
  • A 本周踐行概要 進(jìn)入疲勞期,但堅(jiān)持踐行,給自己一個(gè)贊。 1.早起踐行:完成一般 本周平均起床5:40分左右,...
    吳瓊無(wú)盡閱讀 226評(píng)論 0 4
  • 我,叫夏塔,今年十一歲,我熱愛(ài)自然,我的母親是一個(gè)美麗而勤勞的人,我的姥姥總是對(duì)我的爸爸說(shuō):“你呀,真幸運(yùn)。幸虧...
    王浩然666閱讀 205評(píng)論 2 1
  • 早前朋友圈被這樣一句話給刷屏了,然而我并不是一個(gè)地道的重慶人,抱著單純想一覽山城的心態(tài),觀看了《從你的全世界路過(guò)》...
    貓咪噯閱讀 408評(píng)論 0 0
  • 清早醒來(lái),他們,床上思考 仰望天空,45度角,嘴角留著口水 哈哈,含著手指 中獎(jiǎng)了,不多但也不少,總總,這些積攢的...
    翟美麗閱讀 228評(píng)論 0 0

友情鏈接更多精彩內(nèi)容