上一篇版本控制系統(tǒng)Git 入門(二)
HEAD的概念
HEAD是指向當(dāng)前分支上的最新版本的指針构捡,指向關(guān)系,它指向了當(dāng)前分支的當(dāng)前版本。在上一篇版本控制系統(tǒng)Git 入門(二)中提到一個(gè)查看工作區(qū)和最新提交(最新版本或者叫當(dāng)前版本)的區(qū)別命令git diff HEAD
,再次復(fù)習(xí)下繼續(xù)上一篇的操作查看工作區(qū)和當(dāng)前版本的區(qū)別。
解析:沒(méi)有任何提示箍邮,即沒(méi)有區(qū)別。
版本回退git reset
版本回退是一個(gè)很有用的功能叨叙,第一是可以查看前個(gè)版本做了什么或者任何一個(gè)你想回退的版本做了什么锭弊,第二是當(dāng)前你版本你覺(jué)得有問(wèn)題那么回退到前個(gè)版本重新做修改。
首先用git log --pretty=oneline
查看版本信息
解析:
由上圖可以看到2cecc9e版本,fdb6a版本和a16ff9版本擂错,版本是由最近往后排序的味滞,每個(gè)版本的版本信息也能看到,這也是之前為什么說(shuō)再添加版本到分支時(shí)盡量的詳細(xì)說(shuō)明當(dāng)前版本的信息钮呀。
然后使用命令git reset --hard HEAD^
回溯到上一個(gè)版本剑鞍,還記得HEAD是什么意思嗎?加上^是當(dāng)前版本的上一個(gè)版本爽醋,如果是上上那么命令則是git reset --hard HEAD^^
,當(dāng)然如果是上幾十個(gè)需要寫幾十個(gè)^這樣不是很麻煩蚁署,可以寫git reset --hard HEAD~50
表示回溯到上50個(gè)版本。先回溯到上個(gè)版本吧蚂四。
解析:
提示已經(jīng)說(shuō)明HEAD這個(gè)指針已經(jīng)指向了fdb6ad5這個(gè)版本了也就是已經(jīng)回到了版本號(hào)為fdb6ad5光戈。
回到了過(guò)去,還是可以回到將來(lái)的证杭,使用命令git reset --hard 版本號(hào)哈希值(前面幾位)
就可以回到你想要的版本√锒龋現(xiàn)在我們還是回到之前的版本吧。
解析:
ok,根據(jù)提示我們回來(lái)了解愤。因?yàn)楝F(xiàn)在你可以隨時(shí)去到隨便的版本,只有你知道版本號(hào)乎莉∷徒玻可是如果不知道呢奸笤?
記錄你每一次的命令git reflog
解析:
這個(gè)命令可以清楚的知道當(dāng)前版本,你是做了哪些命令的哼鬓,也可以通過(guò)這個(gè)命令知道版本號(hào)监右,可以回溯到你想要的版本號(hào)。
撤銷修改异希,回到最近一次的git commit或者git add的狀態(tài)git checkout -- file
有個(gè)場(chǎng)景是這樣的健盒,你剛剛提交了版本,然后繼續(xù)修改改完之后称簿,這時(shí)候發(fā)現(xiàn)我去這個(gè)提交到分支被發(fā)現(xiàn)了估計(jì)要扣獎(jiǎng)金怎么辦扣癣,這時(shí)候你可以撤銷這個(gè)修改千萬(wàn)不要提交到版本庫(kù)。
命令git checkout -- git.txt
意思就是憨降,把git.txt文件在工作區(qū)的修改全部撤銷父虑,這里有兩種情況:
- git.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在授药,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)士嚎;
- git.txt已經(jīng)添加到暫存區(qū)后,又作了修改悔叽,現(xiàn)在莱衩,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。
總之娇澎,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)笨蚁。