git學習(廖雪峰git網站)(3)---時光穿梭機(回退和前進)
前提條件:已經將檔案提交。
(1)修改你提交的文字的內容,執行git status
命令看看結果:能夠查到檔案已經修改但未提交;
如果你已經修改過,但忘記是怎麼修改的,用git diff檢視是怎麼修改的;
提交修改和提交新檔案是一樣的步驟:git add 檔名稱 ----》中間插一步 git status,檢查一下要提交的東西包不包括你想要的檔案,存在的話就執行 git commit 檔名,所有的要提交的,都已被提交,且目錄是乾淨的
小結
要隨時掌握工作區的狀態,使用
git status
命令。如果
git status
告訴你有檔案被修改過,用git diff
可以檢視修改內容。
(2)用Git log命令檢視修改的歷史記錄
git log 命令顯示從最近到最遠的提交日誌
當然如果提交的次數過多,可能顯示的資訊較多的話,加上--pretty=oneline
引數:
(我快要瘋了,打了三遍才對,要看準字母喲!
一大串類似1094adb...的是commit id(版本號),和SVN不一樣,Git的commit id不是1,2,3……遞增的數字,而是一個SHA1計算出來的一個非常大的數字,用十六進位制表示,而且你看到的commit id和我的肯定不一樣,以你自己的為準。
小提示:每次提交一個新版本,實際都會自動串成一條時間線。
(3)版本回退
注意:在Git中,用HEAD
表示當前版本,也就是最新的提交1094adb...
(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^
,上上一個版本就是HEAD^^
,當然往上100個版本寫100個^
比較容易數不過來,所以寫成HEAD~100
。
使用git reset --hard HEAD^(--hard放心使用)
檢視返回的版本內的內容:cat 檔名
(可能是中文的原因顯示不出來,具體我也不清楚)
還可以接著回退,用git log再看看現在版本庫的狀態
如果已經回退了,你又想返回你回退前的最新怎麼辦
只要命令視窗沒有關閉過,你可以往上找該版本的commit id,然後就可以回去
版本號沒必要寫全,前幾位就可以了,Git會自動去找。當然也不能只寫前一兩位,因為Git可能會找到多個版本號,就無法確定是哪一個了。
檢視learn.txt內的內容
若你進行了上述版本回退操作的話,後悔了,當你用$ git reset --hard HEAD^
回退到add distributed
版本時,再想恢復到append GPL
,就必須找到append GPL
的commit id。Git提供了一個命令git reflog
用來記錄你的每一次命令:
然後就可以查到當前append GPL的commit id是1094adb,然後在執行git reset --hard 1094abd,就可以乘坐時光穿梭機了!!!
小結:
現在總結一下:
HEAD
指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
。穿梭前,用
git log
可以檢視提交歷史,以便確定要回退到哪個版本。要重返未來,用
git reflog
檢視命令歷史,以便確定要回到未來的哪個版本。cat 檔名,檢視檔案的內容