git知識總結4——檢視歷史、回退版本、刪除
阿新 • • 發佈:2018-12-27
要隨時掌握工作區的狀態,使用
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 commit
或git add
時的狀態。- 小結
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令
git checkout -- file
。場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令
git reset HEAD file
,就回到了場景1,第二步按場景1操作。場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。
命令
git rm
用於刪除一個檔案。如果一個檔案已經被提交到版本庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢復檔案到最新版本,你會丟失最近一次提交後你修改的內容。git rm 之後用git commit 提交