Git教程:Git版本操作之版本回退(一)

版本回退

在前面我們已經修改了 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 <18251716983@163.com>
Date:   Sun Dec 1 20:24:50 2019 +0800

    git better than SVN

commit 1ffeaf83cef2f3976dc3bb6fd1f17e2af2a4a94c
Author: CoderCXF <xxxxxxxxxxx@xxx.com>
Date:   Sun Dec 1 20:16:55 2019 +0800

    commit rwo files one time

commit 61de2ca94483b341f308338bf27f6628dc8d5757
Author: CoderCXF <18251716983@163.com>
Date:   Sun Dec 1 20:15:11 2019 +0800

    first commit

所以,同志們,看到什麼奇蹟發生了沒!!!

可以看到總共有三次提交 :最近的一次是"git better than SVN" ,還有之前的兩次"commit two files one time"以及"first commit"

git 已經詳細的記錄每次歷史提交,包括commit號AuthorDate等等信息。


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 <[email protected]>
Date:   Sun Dec 1 20:16:55 2019 +0800

    commit rwo files one time
commit 61de2ca94483b341f308338bf27f6628dc8d5757
Author: CoderCXF <[email protected]>
Date:   Sun Dec 1 20:15:11 2019 +0800

    first commit

我們之前說只要知道commit號(一大串字符)就可以辦到任何事,於是你就回去找剛纔刪除的那個版本號:找到了,就是a7616f...於是就可以回到剛纔的版本:

git reset --hard a7616f

版本號不用寫全,Git會自動識別,但是也不能寫的太過簡單,否則就會產生衝突。
然後查看 readme.txt 中的內容是否恢復到上一版本:

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 <commmit id> 就能回退到指定的版本。




參考:

【1】Git回滾到之前某一commit

【3】版本回退

【2】廖雪峯Git教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章