今天要延續昨天的進度,主要針對 git reset
作延伸筆記。
今天就輕鬆學習嘍!
首先,可以看到我用 git log
看到我的提交紀錄有三個。
如果我今天要拆掉我最後一次commit的版本回到前一個該如何做呢?
這裡做法有 兩種 -
「相對」
「絕對」
相對
相對的用法有三個
git reset 版本紀錄的識別碼(前七碼)^
如圖:
--就可以回到上一個版本紀錄嚕!
使用 git log
查詢可以看到確實回到上一個紀錄
^
的意思是回到前一次
的意思。
如果我們今天要回到前前一次的話可以寫成 git reset 57989a6^^
。
好的,問題來惹,如果今天老闆要我們回到前6次呢?
聰明的你們一定會這樣以此類推對吧,答案就是 git reset 57989a6^^^^^^
~ 蒸棒。
但身為專業的開發工程師的我們這樣做不符合我們的效率,所以有更好的方法喲!可以寫成 57989a6~6
。
git reset master^
我們可以看到 HEAD
跟 master
目前都是指向 d1bd6ea
這個位置。
所以我們可以寫成 git reset master^
或是 git reset HEAD^
也可以喲!
再使用一次 git log
查詢
--回到前一次的紀錄嚕!
git reset HEAD^
(同上)絕對
絕對用法就是把 reset 後面指向你要回到的那個版本識別碼就可囉!
先看一下我的紀錄是這樣
然後輸入 git reset 版本識別碼
使用 git log
查詢紀錄
打開圖形介面,選擇要回到的版本紀錄 ➜ 按右鍵選擇 Reset master to this commit
會跳出一個視窗,預設是 Mixed (我們要選的也是這個XD),點 ok 就可以嚕!
--mixed 模式
一般如果我們沒特別在 git reset
後面加參數的話,預設就是 mixed 喲!這個意思是指把暫存區的檔案丟掉,但不會動到工作目錄。所以 commit 拆掉後的檔案不會留在暫存區裡。
--soft 模式
工作目錄跟暫存區的檔案都不會被丟掉,所以 commit 拆掉後的檔案會放在暫存區裡。
--hard 模式
就是我們昨天做的,工作目錄跟暫存區的檔案都會被丟掉。
但我們的 git reset
都不是真的把 commit 的版本刪掉或是重新設定的意思喔,他們只是暫時看不到,隨時都可以撿回來D。
所以我們昨天學到的 git reset --hard
可以重新將他們找回來喲!
只要我們不要把
.add
的工作目錄刪掉,所有的一切都還可以重來可以挽救哦!但只要刪掉 .git 你就真的真的真的GG惹:)
最後,一定要跟你們分享一句話:
人生不能重來,但 GIT 可以 引用高見龍大神的 為你自己學 Git
明天就來學挽救被我失手 git reset --hard
的檔案吧(ゝ∀・)⌒☆