簡單使用Git與github(三)

git版本回退

參考
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000
mark下來,以後方便查找。
git 的版本回退操作步驟

  • git log 查看提交記錄

    git log從提交記錄裏面可看到提交的版本號,git和SVN的版本號不一樣,git的commit id不是1,2,3……遞增的數字,而是一個SHA1計算出來的一個非常大的數字,用十六進制表示.
    這裏寫圖片描述
    黃色的字體跟在commit後面的就是提交的版本號。

  • $ git reset –hard HEAD^

    git reset --hard HEAD^ 表示回退到上一個版本。繼續使用這條指令可以還可以繼續回退到上一個版本,但是步驟有點麻煩。

  • git reset –hard 24f3f02cce00c646bd76b0283ff355fd28bc7dca

    可以從log裏面的版本號直接回退到該版本號,版本號不用寫全,寫前面幾位數也可以,git會自動去找,例如:git reset --hard 24f3f這樣既可回到該版版號。

  • git reflog

    現在,你回退到了某個版本,關掉了電腦,第二天早上就後悔了,想恢復到新版本怎麼辦?找不到新版本的commit id怎麼辦?在tit中,總是有後悔藥可以吃的。git提供了一個命令git reflog用來記錄你的每一次命令。看到這些記錄的指令,你就可以使用git reset --hard 回到某個版本了。
    這裏寫圖片描述

git撤銷修改

  • 沒有修改過的時候

    當你沒有做過修改的時候使用git status查看狀態時會出現如下:

    $ git status
    On branch master
    nothing to commit, working tree clean
  • 場景1:修改並未add

    當你修改了本地的README.md,並未add和commit提交的時候,使用git status,出現如下提示:
    這裏寫圖片描述
    這時候你直接改本地文件或者,使用git checkout --<file>...可以放棄工作區的修改。例如:git checkout -- README.md意思就是,把README.md文件在工作區的修改全部撤銷。你打開README.md查看就發現修改的唄撤銷了。

  • 場景2:已經add到緩存區了但未commit

    假如你已經將修改多的文件add到了緩存區,想回退清空緩存區的時候。
    這裏寫圖片描述git會友好的提示你change to be commited也可以回退使用git reset HEAD <file>...可以把暫存區的修改撤銷掉(unstage),重新放回工作區。
    這裏寫圖片描述git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD時,表示最新的版本。再用git status查看一下,現在暫存區是乾淨的,工作區有修改。可以使用放棄工作空間的修改git checkout -- README.md意思就是,把README.md文件在工作區的修改全部撤銷

場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout – file。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD ,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考上面的git版本回退,不過前提是沒有推送到遠程庫。

git查看工作區和版本庫裏面最新版本的區別

git diff命令可以查看工作區和版本庫裏面最新版本的區別,也可以用git diff HEAD <file>指定某個文件和最新本版本庫裏面的區別,例如指定README.md文件:git diff HEAD README.md

git rm刪除文件

在git 指令中可以用git rm <file>進行刪除文件。例如我要刪除已經提交的一個文件test.txt。直接使用git rm test.txt就可以把該文件刪除了。查看刪除的狀態如圖:
這裏寫圖片描述
現在你有兩個選擇,一是確實要從版本庫中刪除該文件,那就用命令git rm刪掉,並且git commit。另一種情況是刪錯了,因爲版本庫裏還有呢,所以可以很輕鬆地把誤刪的文件恢復到最新版本:$ git checkout -- test.txtgit checkout其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章