版本回退

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

Git is a distributed version control system.
Git is free software distributed under the GPL.

然后嘗試提交:

$ git add readme.txt
$ git commit -m "append GPL"
[master 5c96006] append GPL
 1 file changed, 1 insertion(+), 1 deletion(-)




1.查看文件版本

git log 命令查看文件版本:

$ git log
commit 5c960066252bcaafc91a539438a825c93edd8c31
Author: diego <xxxxx@xx.com>
Date:   Wed Feb 15 09:46:52 2017 +0800

    append GPL

commit 5011921a4f0616633b80edcbbf00a069a14db63e
Author: diego <xxxxx@xx.com>
Date:   Wed Feb 15 09:41:49 2017 +0800

    add distributed

commit 5acb254c4a133cbcf36459031b929a2432a12dc2
Author: diego <xxxxx@xx.com>
Date:   Wed Feb 15 08:48:47 2017 +0800

    wrote a readme file

git log 命令顯示從最近到最遠(yuǎn)的提交日志,我們可以看到3次提交,最近的一次是 append GPL,上一次是 add distributed,最早的一次是 wrote a readme file。

如果嫌輸出信息太多,可以試試加上 --pretty=oneline 參數(shù):

$ git log --pretty=oneline
5c960066252bcaafc91a539438a825c93edd8c31 append GPL
5011921a4f0616633b80edcbbf00a069a14db63e add distributed
5acb254c4a133cbcf36459031b929a2432a12dc2 wrote a readme file

一大串類似 3628164...882e1e0 的是 commit id(版本號),和 SVN 不一樣, Git 的 commit id 不是1,2,3……遞增的數(shù)字,而是一個(gè) SHA1 計(jì)算出來的一個(gè)非常大的數(shù)字,用十六進(jìn)制表示。

因?yàn)?Git 是分布式的版本控制系統(tǒng),后面我們還要研究多人在同一個(gè)版本庫里工作,如果大家都用1,2,3……作為版本號,那肯定就沖突了。




2.版本退回

現(xiàn)在我們要把 readme.txt 回退到上一個(gè)版本,也就是“add distributed”的那個(gè)版本,怎么做呢?

首先,Git 必須知道當(dāng)前版本是哪個(gè)版本,在 Git 中,用 HEAD 表示當(dāng)前版本,上一個(gè)版本就是 HEAD^,上上一個(gè)版本就是 HEAD^^,當(dāng)然往上 100 個(gè)版本寫 100 個(gè) ^ 比較容易數(shù)不過來,所以寫成 HEAD~100。

現(xiàn)在,我們要把當(dāng)前版本“append GPL”回退到上一個(gè)版本“add distributed”,就可以使用 git reset 命令:

$ git reset --hard HEAD^
HEAD is now at 5011921 add distributed

看看 readme.txt 的內(nèi)容是不是版本 add distributed:

$ cat readme.txt
Git is a distributed version control system.
Git is free software.

現(xiàn)在我們用 git log 再看看現(xiàn)在版本庫的狀態(tài):

$ git log
commit 5011921a4f0616633b80edcbbf00a069a14db63e
Author: diego <xxxxxxxx@qq.com>
Date:   Wed Feb 15 09:41:49 2017 +0800

    add distributed

commit 5acb254c4a133cbcf36459031b929a2432a12dc2
Author: diego <xxxxxxxx@qq.com>
Date:   Wed Feb 15 08:48:47 2017 +0800

    wrote a readme file




3.版本前進(jìn)

如果我要把 readme.txt 回到"append GPL"的版本,該怎么辦?

如果命令行窗口還沒有被關(guān)掉,我們可以順著往上找啊找啊,找到那個(gè) append GPL 的 commit id 是 5c96006……,就可以指定回到某個(gè)版本:

$ git reset --hard 5c96006
HEAD is now at 5c96006 append GPL

版本號沒必要寫全,前幾位就可以了,Git 會自動(dòng)去找。

如果命令窗口關(guān)掉了,找不回 commit id,該怎么辦呢?

Git 提供了一個(gè)命令 git reflog 用來記錄你的每一次命令:

$ git reflog
5c96006 HEAD@{0}: reset: moving to 5c96006
5011921 HEAD@{1}: reset: moving to HEAD^
5c96006 HEAD@{2}: commit: append GPL
5011921 HEAD@{3}: commit: add distributed
5acb254 HEAD@{4}: commit (initial): wrote a readme file

在這里我們可以看到版本 append GPL 的 commit id 是 5c96006,有了這個(gè)就可以回到該版本了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自: http://www.liaoxuefeng.com/wiki/0013739516305929606dd...
    CoderJohnhao閱讀 10,563評論 1 3
  • 現(xiàn)在,你已經(jīng)學(xué)會了修改文件,然后把修改提交到Git版本庫,現(xiàn)在,再練習(xí)一次,修改readme.txt文件如下: G...
    蕭非子閱讀 667評論 0 49
  • 版本退回 現(xiàn)在,你已經(jīng)學(xué)會了修改文件,然后把修改提交到Git版本庫,現(xiàn)在,再練習(xí)一次,修改readme.txt文件...
    曹淵說創(chuàng)業(yè)閱讀 270評論 0 0
  • 《舌尖上的中國》是由央視陳曉卿執(zhí)導(dǎo),主題圍繞中國人對美食和生活的美好追求,用具體人物故事串聯(lián)起講述了中國各地的美食...
    悠悠然a閱讀 497評論 4 3
  • 最近兩年總是覺得自己不快樂,不幸福!跟老公斗嘴,冷戰(zhàn),跟公婆也冷淡,跟同事也平淡,個(gè)別同事有些小過節(jié),覺得領(lǐng)導(dǎo)也不...
    自由女俠閱讀 321評論 0 0

友情鏈接更多精彩內(nèi)容