Git 版本前后切換
主要內容:
1) HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
2)用git log可以查看提交歷史,可以查詢到我們要返回版本的ID。
3)版本回退之后,需要再次回到會退前,可以用git reflog查看命令歷史,可以查看到每次命令的記錄,里面會有我們需要的版本ID。
假設在工作中,你將辛辛苦苦寫了一半的代碼改亂了,想要回到這次修改之前,而不至於所有的勞動功虧一簣,這時候我們該怎么做呢
例如:我們已經有一個將 text 這個項目提交到Git 倉庫了,並且已經有了多次的提交
第一次提交:add index.html (首頁布局已完成)
第二次提交: add 1.txt
第三次提交: change 1.txt
這時候,修改 text1.txt 之后,我覺得之前的版本好像更合適一些,需要回退到之前的版本
我只需要用到 git reset 就可以做到的
情景一: 明確知道我們要回退到第幾個版本
打開相應的Git 命令行,在Git中,用HEAD表示當前版本,所以回退到上一個版本就只需要使用命令:
git reset --hard HEAD^
如果是上上一個版本的話,只需要使用命令:
git reset --hard HEAD^^
要是需要回退到20個版本之前的話,就可以使用命令:
git reset --hard HEAD~20
情景二:已經不記得是第幾個版本了
有時候,提交的東西多了,或者是一段時間后,再來繼續這個項目,可能早就不記得到底是第幾個版本了,這時候,我們可以使用命令:git log 來查看每次的更改記錄
$ git log
commit 580361e6bf5ce744c0ca4a2295e97bc42f5a6c36 (HEAD -> master)
Author: leyale mogu163@yeah.net
Date: Sat Dec 1 11:44:08 2018 +0800
chgange 1.txt
commit 5a73f7b0689653dafddf5a37c1b3dde5b19f144e
Author: leyale mogu163@yeah.net
Date: Sat Dec 1 11:43:28 2018 +0800
add 1.txt
commit 52602b0b04b57b33310fa256707518b126d2648c
Author: leyale mogu163@yeah.net
Date: Sat Dec 1 11:42:12 2018 +0800
add index.html
從上面我們可以看到相關的提交日志,一共是3次修改,在Data中我們可以看到每次提交的具體時間,Data后面是我們每次提交的時候,所填寫的提交備注,這樣就可以知道自己需要回退到哪個版本了,另外值得注意的是commit 后面的一串字符,這個是我們的提交ID,每個人的都是不一樣的,在這個時候,我們回退就可以直接借助這個ID來回退了
ID回退命令: $ git reset --hard 52602b0b04b57b33310fa256707518b126d2648c
執行后返回:HEAD is now at 52602b0 add index.html
這時候,我們回到了第一次提交,也就是說,text 中就只有第一次提交的index.html這一個文件了
情景三:回退到某一個文件之后,又需要返回到最近更新的某個版本
原命令行窗口還未關閉: 直接往上查看一下要回到的那個版本的ID,然后執行命令:
$ git reset --hard 580361e6bf5ce744c0ca4a2295e97bc42f5a6c36
已經關閉:
可以借助命令: $ git reflog 來查看每一次命令的記錄
查看到之后,我們再利用 git reset 來返回到相應的版本即可,HEAD前面的一串字符為我們簡寫的ID
命令: $ git reset --hard 580361e
大功告成,這時候再次查看你的text 文件夾,里面的以及修改過的 1.txt 已經回來啦.