1. 程式人生 > >git學習(廖雪峰git網站)(3)---時光穿梭機(回退和前進)

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 檔名,檢視檔案的內容