Git筆記 撤銷 刪除 恢復

2021-09-29 14:48:36 字數 2879 閱讀 9616

何為修改?比如新增了一行、刪除了一行、更改了某些字元、刪了一些又加了一些都是修改,甚至建立乙個新檔案也算乙個修改。

實驗

我們在readme.txt增加一行,cat看一下,add 到快取區,而後又修改一下,然後cat看一下。

commit提交一下並status檢視一下狀態:

我們發現第二次的修改沒有提交哦。先理一下我們的操作:

第一次修改 => git add => 第二次修改 => git commit

結論:git管理的是修改,當你用git add命令後,在工作區的第一次修改被放入暫存區,準備提交,但在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交。

提交後,用git diff head – learn.txt命令可以檢視工作區和版本庫裡面最新版本的區別。

從上面的實驗我們可以理解git如何跟蹤修改的,且我們可以得知:對於git的每次修改,每次修改,如果不用git add到暫存區,那就不會加入到commit中。

那麼我們如何提交第二次修改呢?

第一次修改 => git add => 第二次修改 => git add => git commit

場景:當你亂改了工作區的某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout –

實驗:首先在learn.txt增加my stupid boss still prefers svn. 使用git status後發現,工作區被修改了。

你會發現git提示你,git restore 可以丟棄工作區的修改,但是其實用的最多的還是git checkout – 。

命令 git checkout – learn.txt 意思是把learn.txt檔案在工作區的修改全部撤銷。

這裡有兩種情況:

總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。注意:git checkout – 命令中的–很重要,沒有–,就變成了「切換到另乙個分支」的命令。

場景:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步:

step1:用命令git reset head

step2:用命令git checkout –

實驗:首先在learn.txt 中新增了一行,cat 看一下,然後git add 到暫存區。

使用git reset hard,用命令 **git reset head **可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

現在已經放回工作區了,可以用git checkout – learn.txt進行撤銷工作區的修改。

git reflog看下所有記錄。

在git中,刪除也是乙個修改操作,我們實戰一下,先新增乙個新檔案test.txt到git並且提交,一般情況下,你通常直接在檔案管理器中把沒用的檔案刪了,或者用rm命令刪了,這個時候,git知道你刪除了檔案。

因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些檔案被刪除了。

確定要從版本庫刪除該檔案,那就用命令 git rm 刪除,且commit,注意一下:先手動刪除檔案,然後使用 git rm 和 git add 效果是一樣的。

在版本庫中把檔案刪除後的你呀,後悔了,怎麼把刪除的test.txt找回來呢?那麼你可以直接用:git reset --hard head^//回退上個版本

注意:但是可能會影響你其他修改但是未提交的其他內容的。

因為版本庫里還有呢,所以可以很輕鬆地把誤刪的檔案恢復到最新版:git checkout –

git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。

注意:從來沒有被新增到版本庫就被刪除的檔案,是無法恢復的!

vi vim 刪除 撤銷 恢復刪除 複製刪除

vi命令 操作鍵x刪除當前游標處的字元 x刪除游標左邊的字元 d刪除從當前游標到本行末尾的字元 j刪除兩行之間的換行符 亦可用於合併兩行 dmove 刪除從當前游標到move所給位置的字元 dd刪除當前行 ex命令 lined 刪除指定行 line,lined 刪除指定範圍內的行 說明 操作符命令 ...

vi vim 刪除 撤銷 恢復刪除 複製刪除

vi命令 操作鍵x 刪除當前游標處的字元 x刪除游標左邊的字元 d刪除從當前游標到本行末尾的字元 j刪除兩行之間的換行符 亦可用於合併兩行 dmove 刪除從當前游標到move所給位置的字元 dd刪除當前行 ex命令 lined 刪除指定行 line,lined 刪除指定範圍內的行 說明 操作符命令...

vi vim 刪除 撤銷 恢復刪除 複製刪除

vi命令 操作鍵x 刪除當前游標處的字元 x刪除游標左邊的字元 d刪除從當前游標到本行末尾的字元 j刪除兩行之間的換行符 亦可用於合併兩行 dmove 刪除從當前游標到move所給位置的字元 eg d3再按下右箭頭,就可以刪除從當前游標開始3位字元 dd刪除當前行 ex命令 lined 刪除指定行 ...