10 所有文章

【Git教學】Git 時光機回復版本的 2 種方法 reset & checkout

git_恢覆版本_reset_checkout_Max行銷誌

一. git reset

Git 的 Reset 指令用中文來說比較像是「前往」,而 git reset 指令可以搭配參數使用,常見到的參數,是 –soft 以及 –hard 模式。

▍git reset –soft 模式

這個模式下的 reset,工作目錄跟暫存區的檔案都不會被丟掉,所以看起來就只有 HEAD 的移動而已。也因此,Commit 拆出來的檔案會直接放在暫存區。

$ git reset --soft HEAD~1 # 數字表示移動到 HEAD後面第幾個

▍git reset –hard 模式

在這個模式下,不管是工作目錄以及暫存區的檔案都會丟掉。

$ git reset --hard HEAD~1 # 數字表示移動到 HEAD後面第幾個

那如果要把這些被丟掉的檔案找回來怎麼辦?

別擔心使用 git reflog,可以看到 reset 前的紀錄,然後再使用 git reset <commit ID> 就可以回到 reset 前的紀錄囉!

$ git reflog

>>> 96b190b (HEAD -> master) [email protected]{6}: reset: moving to HEAD~2
>>> f4a52eb [email protected]{7}: commit: +main04
>>> 3216290 [email protected]{8}: commit: +main03

二. git checkout

這個指令會把目前的 HEAD 移到指定的 commit 上,並且把目前的狀態變成當時 commit 的樣子,但是不會移動任何分支(也就是分支都停在原來的地方,只有 HEAD 移動而已)。
因此,整個歷史紀錄看起來並沒有什麼變化,只是 HEAD 暫時移到某個地方而已。

$ git checkout HEAD~1 # 數字表示移動到 HEAD後面第幾個

如果想在這個版本修改資料,可以建立新的分支,修改完後再 merge 回主線。

$ git checkout -b <新分支名稱>

三. 使用 checkout 和 reset 的時機

git checkout :如果是想要切換 HEAD、branch 或創建新的 branch,請使用 git checkout,checkout 就是一個負責移動 HEAD 指到不同地方的指令

git reset:如果想要清除過去做過的壞事,就使用 git reset,會幫你把紀錄都抹掉,消除掉,使用時請謹慎使用

最後~

▍回顧本篇我們介紹了的內容:

  • git reset 使用方式
  • git checkout 使用方式
  • 使用 checkout 和 reset 的時機

Git 相關延伸閱讀:

其他相關延伸閱讀:

那 [Git教學] Git 時光機回復版本的 2 種方法 reset & checkout 就到這邊,感謝收看,如果有任何問題歡迎留言唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *