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

2021-10-01 04:51:30 字數 3763 閱讀 5202

在前面我們已經修改了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 <

[email protected]>

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 <

[email protected]>

date: sun dec 120:

15:112019

+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

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 撤銷本次全部檔...