git版本管理工具之版本管理

http://www.cooklife.cn/detail/551576bd9218037076133136#View

git是幹嘛的?

版本管理工具是幹嘛的?當然是管理同一個文件不同的版本的。那麼版本是什麼概念,對於一個文件,從新建到完成態,期間會經過很多個狀態,有的時候我們希望保存這些中間狀態,在需要的時候可以恢復到其中的某個狀態,這個中間狀態就是一個版本。

跟svn不同,svn中的版本號是一個自增長的數字,在git中的版本號是根據某些規則生成的不重複的長度爲40的字符串,每次commit之後就會生成一個版本號來標識這次提交之後版本庫的快照,之後可以根據這個版本號來恢復到當前的狀態。

我們在README.txt文件中再次加入一些信息"add some information again"

git add README.txt
git commit -m "add some information again"
$ git log --pretty=oneline
7c19d353bdf0f077871d3021f5bd2b405f749061 add some information again
06e8b27ed48476f4a1cface043d1c2b5d4f3abd8 add some information
e182fa0a95c19feb5951e0a05fff0fd2260fb39b '初始化提交'
通過git log我們可以看到提交的歷史,在git中用HEAD表示當前的版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,上上上個版本就是HEAD^^^,那麼往前100個版本是....,這裏就不寫了,大家自己可以回去練習。

如果我們想做時光機回到回去怎麼辦?答案是使用git

git reset --hard HEAD^
git reset --hard versionNum
versionNum是那四十字符長度的字符串,我們再看看,工作空間內的文件是否恢復到上一個版本了,我們再執行git log

$ git log
commit 06e8b27ed48476f4a1cface043d1c2b5d4f3abd8
Author: yangnianbing <[email protected]>
Date:   Fri Mar 27 22:53:03 2015 +0800

    add some information

commit e182fa0a95c19feb5951e0a05fff0fd2260fb39b
Author: yangnianbing <[email protected]>
Date:   Fri Mar 27 20:06:58 2015 +0800
    '初始化提交'
咦,我們回到了過去,但是發覺不好玩了,回頭一看,返回未來的座標腫麼沒了?這下可怎麼辦,難道就生活在這個拉屎只能用瓦片刮屁屁的時代麼。當然是不會的,萬能的git大神怎麼可能沒有考慮到這一點。
$ git reflog
06e8b27 HEAD@{0}: reset: moving to HEAD^
7c19d35 HEAD@{1}: commit: add some information again
06e8b27 HEAD@{2}: commit: add some information
e182fa0 HEAD@{3}: reset: moving to e182
488db63 HEAD@{4}: commit: ddssd
e182fa0 HEAD@{5}: commit (initial): '初始化提交'
look,返回未來的座標又回來了git reset --hard 7c19d35,好吧,我們又回來了。
發佈了81 篇原創文章 · 獲贊 12 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章