iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 13
1

哈嘍,大家好

今天要延續昨天的進度,主要針對 git reset 作延伸筆記。

今天就輕鬆學習嘍!


/補充說明/

首先,可以看到我用 git log 看到我的提交紀錄有三個。
git log - 查詢狀態

如果我今天要拆掉我最後一次commit的版本回到前一個該如何做呢?
這裡做法有 兩種 -

  • 一種是「相對」
  • 一種是「絕對」

相對

相對的用法有三個

第一個 git reset 版本紀錄的識別碼(前七碼)^

如圖:
git reset 版本紀錄的識別碼(前七碼)^ (相對拆除)
--就可以回到上一個版本紀錄嚕!

使用 git log 查詢可以看到確實回到上一個紀錄
git log - 查詢紀錄

^ 的意思是回到 前一次 的意思。

如果我們今天要回到前前一次的話可以寫成 git reset 57989a6^^

好的,問題來惹,如果今天老闆要我們回到前6次呢?
聰明的你們一定會這樣以此類推對吧,答案就是 git reset 57989a6^^^^^^~ 蒸棒。
但身為專業的開發工程師的我們這樣做不符合我們的效率,所以有更好的方法喲!可以寫成 57989a6~6


第二個 git reset master^

我們可以看到 HEADmaster 目前都是指向 d1bd6ea 這個位置。
git reset master^

所以我們可以寫成 git reset master^ 或是 git reset HEAD^ 也可以喲!
git reset master^ 或 git reset HEAD^

再使用一次 git log 查詢
https://ithelp.ithome.com.tw/upload/images/20190914/20119923q3DARqOo2y.png
--回到前一次的紀錄嚕!

第三個 git reset HEAD^ (同上)


絕對

絕對用法就是把 reset 後面指向你要回到的那個版本識別碼就可囉!

先看一下我的紀錄是這樣
git log - 查詢紀錄

然後輸入 git reset 版本識別碼
git reset 版本識別 (絕對)

使用 git log 查詢紀錄
git log - 查詢紀錄


SourceTree

打開圖形介面,選擇要回到的版本紀錄 ➜ 按右鍵選擇 Reset master to this commit
SourceTree 的Git工作狀態還原

會跳出一個視窗,預設是 Mixed (我們要選的也是這個XD),點 ok 就可以嚕!
SourceTree 的Git工作狀態還原


#Reset 的模式

  • mixed 模式
  • soft 模式
  • hard 模式

--mixed 模式
一般如果我們沒特別在 git reset 後面加參數的話,預設就是 mixed 喲!這個意思是指把暫存區的檔案丟掉,但不會動到工作目錄。所以 commit 拆掉後的檔案不會留在暫存區裡。

--soft 模式
工作目錄跟暫存區的檔案都不會被丟掉,所以 commit 拆掉後的檔案會放在暫存區裡。

--hard 模式
就是我們昨天做的,工作目錄跟暫存區的檔案都會被丟掉。

但我們的 git reset 都不是真的把 commit 的版本刪掉或是重新設定的意思喔,他們只是暫時看不到,隨時都可以撿回來D。
所以我們昨天學到的 git reset --hard 可以重新將他們找回來喲!

只要我們不要把 .add 的工作目錄刪掉,所有的一切都還可以重來可以挽救哦!但只要刪掉 .git 你就真的真的真的GG惹:)

最後,一定要跟你們分享一句話:
人生不能重來,但 GIT 可以 引用高見龍大神的 為你自己學 Git


明天就來學挽救被我失手 git reset --hard 的檔案吧(ゝ∀・)⌒☆


上一篇
Day12【Git與GitHub】工作狀態還原
下一篇
Day14【Git與GitHub】救回reset後的commit
系列文
Git與Github-30天學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言