1. 程式人生 > >git知識總結4——檢視歷史、回退版本、刪除

git知識總結4——檢視歷史、回退版本、刪除

  • 要隨時掌握工作區的狀態,使用git status命令。

  • 如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容。

    • HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id

      git reset --hard HEAD^ 退回到上一個版本
    • 命令git reset HEAD file可以把暫存區的修改撤銷掉(unstage),重新放回工作區
      
    • 穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。引數--pretty=oneline

    • 要重返未來,用git reflog

      檢視命令歷史,以便確定要回到未來的哪個版本。

    • 在Git中,用HEAD表示當前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100
    • git diff HEAD -- readme.txt命令可以檢視工作區和版本庫裡面最新版本的區別
    • 命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

      一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

      一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

      總之,就是讓這個檔案回到最近一次git commitgit add時的狀態。

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

      場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。

      場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。

    • 命令git rm用於刪除一個檔案。如果一個檔案已經被提交到版本庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢復檔案到最新版本,你會丟失最近一次提交後你修改的內容。git rm 之後用git commit 提交