日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

版本回退

發(fā)布時(shí)間:2024/9/27 153 豆豆
生活随笔 收集整理的這篇文章主要介紹了 版本回退 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

現(xiàn)在,你已經(jīng)學(xué)會(huì)了修改文件,然后把修改提交到Git版本庫,現(xiàn)在,再練習(xí)一次,修改readme.txt文件如下:

i am gblfy i am yuxin

然后,【工作區(qū)】-【暫存區(qū)】-【本地倉庫】嘗試提交:

修改readme.txt內(nèi)容如下:

i am gblfy i am yuxin i am gz

提交到本地倉庫,【工作區(qū)】-【暫存區(qū)】-【本地倉庫】嘗試提交:


版本1:第1次提交

i am gblfy

版本2:第2次提交

i am yuxin

版本3:第3次提交

i am gz

版本控制系統(tǒng)肯定有某個(gè)命令可以告訴我們歷史記錄,在Git中,我們用git log命令查看:

git log

git log命令顯示從最近到最遠(yuǎn)的提交日志,我們可以看到3次提交,最近的一次是第3次提交,上一次是第2次提交,最早的一次是第1次提交。

如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù):

git log --pretty=oneline


每提交一個(gè)新版本,實(shí)際上Git就會(huì)把它們自動(dòng)串成一條時(shí)間線。如果使用可視化工具查看Git歷史,就可以更清楚地看到提交歷史的時(shí)間線:

好了,現(xiàn)在我們啟動(dòng)時(shí)光穿梭機(jī),準(zhǔn)備把readme.txt回退到上一個(gè)版本,也就是第2次提交的那個(gè)版本,怎么做呢?

首先,Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中,用HEAD表示當(dāng)前版本,也就是最新的提交7ff6778…(注意我的提交ID和你的肯定不一樣),上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)然往上100個(gè)版本寫100個(gè)^比較容易數(shù)不過來,所以寫成HEAD~100。

現(xiàn)在,我們要把當(dāng)前版本第3次提交回退到上一個(gè)版本第2次提交,就可以使用git reset命令:

git reset --hard HEAD^


--hard參數(shù)有啥意義?這個(gè)后面再講,現(xiàn)在你先放心使用。

看看readme.txt的內(nèi)容是不是版本第2次提交:

cat readme.txt


果然被還原了。

還可以繼續(xù)回退到上一個(gè)版本第1次提交,不過且慢,然我們用git log再看看現(xiàn)在版本庫的狀態(tài):

git log

最新的那個(gè)版本第3次提交已經(jīng)看不到了!好比你從21世紀(jì)坐時(shí)光穿梭機(jī)來到了19世紀(jì),想再回去已經(jīng)回不去了,腫么辦?

辦法其實(shí)還是有的,只要上面的命令行窗口還沒有被關(guān)掉,你就可以順著往上找啊找啊,找到那個(gè)第3次提交的commit id是7ff6778...,于是就可以指定回到未來的某個(gè)版本:

git reset --hard 7ff6778e


版本號(hào)沒必要寫全,前幾位就可以了,Git會(huì)自動(dòng)去找。當(dāng)然也不能只寫前一兩位,因?yàn)镚it可能會(huì)找到多個(gè)版本號(hào),就無法確定是哪一個(gè)了。

再小心翼翼地看看readme.txt的內(nèi)容:

cat readme.txt


果然,我胡漢三又回來了。

Git的版本回退速度非常快,因?yàn)镚it在內(nèi)部有個(gè)指向當(dāng)前版本的HEAD指針,當(dāng)你回退版本的時(shí)候,Git僅僅是把HEAD從指向第:3次提交

┌────┐ │HEAD│ └────┘│└──> ○ 第3次提交│○ 第2次提交│○ 第1次提交

改為指向第2次提交

┌────┐ │HEAD│ └────┘││ ○ 第3次提交│ │└──> ○ 第2次提交│○ 第1次提交

然后順便把工作區(qū)的文件更新了。所以你讓HEAD指向哪個(gè)版本號(hào),你就把當(dāng)前版本定位在哪。

現(xiàn)在,你回退到了某個(gè)版本,關(guān)掉了電腦,第二天早上就后悔了,想恢復(fù)到新版本怎么辦?找不到新版本的commit id怎么辦?

在Git中,總是有后悔藥可以吃的。當(dāng)你用$ git reset --hard HEAD^回退到第2次提交版本時(shí),再想恢復(fù)到第3次提交,就必須找到第3次提交的commit id。Git提供了一個(gè)命令git reflog用來記錄你的每一次命令:

git reflog


終于舒了口氣,從輸出可知,第3次提交的commit id是7ff6778,現(xiàn)在,你又可以乘坐時(shí)光機(jī)回到未來了。
小結(jié)
現(xiàn)在總結(jié)一下:

HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令git reset --hard commit_id。

穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。

要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個(gè)版本。

總結(jié)

以上是生活随笔為你收集整理的版本回退的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。