在前面我們已經修改了readme.txt
檔案如下內容:
git is a version control tool
git is the most advaced version control system
i learn git now
這裡我們再新增一行:
git is a version control tool
git is the most advaced version control system
i learn git now
i think git is better than svn
然後提交至倉庫:
$ git add readme.txt
$ git commit -m "git better than svn"
好,到現在,你還記得readme
總共修改幾次,提交了幾次嗎?
你可能會記得,總共三次是吧。但是如果乙個檔案我們需要修改幾十次,上百次你還會記得嗎?更別說記得每次具體修改**了。所以這就是git發揮威力的時刻了,乙個命令就告訴你readme 提交記錄,以及每次的變化,命令:git log
:
$ git log
codercxf@codercxf-
virtual
-machine:
~/desktop/firstrep$ git log
commit a7616face803479e0573ff35bc18d00439cf28ff (head -
> master)
author: codercxf <
date: sun dec 120:
24:502019
+0800
git better than svn
commit 1ffeaf83cef2f3976dc3bb6fd1f17e2af2a4a94c
author: codercxf
date: sun dec 120:
16:552019
+0800
commit rwo files one time
commit 61de2ca94483b341f308338bf27f6628dc8d5757
author: codercxf <
date: sun dec 120:
15:112019
+0800
first commit
所以,同志們,看到什麼奇蹟發生了沒!!!
可以看到總共有三次提交 :最近的一次是"git better than svn" ,還有之前的兩次"commit two files one time"以及"first commit"
git 已經詳細的記錄每次歷史提交,包括commit號
、author
、date
等等資訊。
git log 只是乙個花絮,別忘了主題:如何回退到之前的版本?
看到上面git log 命令返回的嘛,其中以乙個是commit 號(版本號),就是a7616face..
很長的一點數字,每一次提交的commit號都不一樣,很容易理解,就是為了區分每一次提交,數字很長才不會造成重複。
可以這樣說,只要知道了版本號就很容易回退到之前的任何乙個版本,問題解決,所以到底該怎樣做呢?
假如我們現在並不認為git要比svn好(雖然是事實^ ^),也就是要回退到沒有 "git is better than svn"的版本,即 "commit two files one time "的版本
我們可以使用git reset
回退,前乙個版本是head^
,前前乙個版本是head^^
, 以此類推,但是要是前10個版本,難道要寫10個上標?當然不會那麼愚蠢,例如回退10個就可以使用head~10
。
現在回退到前乙個版本:
$ git reset --hard head^
此時來檢視readme.txt
檔案內容是不是已經回退成功:
$ cat readme.txt
git is a version control tool
git is the most advaced version control system
i learn git now
可以看到,果然 「git is better than svn」 沒有了,回退成功。我們也可以繼續回退到前前乙個版本,直接繼續git reset
即可。
但如果這時候,你還是覺得git 比 svn 好用,後悔之前的刪除操作,還想要恢復到之前的版本,該怎麼辦?說分手了還能再說我愛你?是的,在git的世界裡是可以的:
可是我們使用git log
檢視的時候,已經沒有了剛才刪除的版本記錄,該怎麼辦?
commit 1ffeaf83cef2f3976dc3bb6fd1f17e2af2a4a94c
author: codercxf
date: sun dec 1 20:16:55 2019 +0800
commit rwo files one time
commit 61de2ca94483b341f308338bf27f6628dc8d5757
author: codercxf
date: sun dec 1 20:15:11 2019 +0800
first commit
我們之前說只要知道commit號(一大串字元)就可以辦到任何事,於是你就回去找剛才刪除的那個版本號:找到了,就是a7616f...
於是就可以回到剛才的版本:
git reset --hard a7616f
cat readme.txt
git is a version control tool
git is the most advaced version control system
i learn git now
i think git is better than svn
看到已經恢復了上一版本。
小結:記住:head指向的是當前的版本
1)如果要回退到前乙個版本使用 :git reset --hard head^
,返回前前乙個版本使用的是:git reset --hard head^^
;
(tips:之前的版本並未被刪除!只是head指標的指向變化)
2)使用git log
檢視提交記錄(包括版本號等資訊);
3)總之使用git reset --hard
就能回退到指定的版本。
參考:git回滾到之前某一commit
版本回退
廖雪峰git教程
GIT 版本控制學習 怎麼操作git
由於測試freeswitch不同版本的需要,研究了下git的使用,通過git來管理所有的版本,方便了測試。以下就總結下具體的使用方法 其中 git clone 是現在git倉庫 git tag 是檢視freeswitch的版本 git checkout v.是切換到指定的v.版本 git archi...
git 版本控制基本操作
教程 支援linux命令 本地操作 工作區 0.初始化設定 git config global user.name 使用者名稱 git config global user.email x xx.com 1.git init 新建git管理倉庫,和文字在同級目錄方便 2.git add readme...
Git版本控制常見操作
告知git 是誰提交的 global全域性化專案使用者資訊 git config global user.name 自己git的使用者名稱 git config global user.email 自己git的郵箱位址 1 git status 檢視狀態 2 git checkout 撤銷本次全部檔...