Table
一. git reset
Git 的 Reset 指令用中文來說比較像是「前往」,而 git reset 指令可以搭配參數使用,常見到的參數,是 –soft 以及 –hard 模式。
▍git reset –soft 模式
這個模式下的 reset,工作目錄跟暫存區的檔案都不會被丟掉,所以看起來就只有 HEAD 的移動而已。也因此,Commit 拆出來的檔案會直接放在暫存區。
1 |
$ git reset --soft HEAD~1 # 數字表示移動到 HEAD後面第幾個 |
▍git reset –hard 模式
在這個模式下,不管是工作目錄以及暫存區的檔案都會丟掉。
1 |
$ git reset --hard HEAD~1 # 數字表示移動到 HEAD後面第幾個 |
那如果要把這些被丟掉的檔案找回來怎麼辦?
別擔心使用 git reflog,可以看到 reset 前的紀錄,然後再使用 git reset <commit ID> 就可以回到 reset 前的紀錄囉!
1 2 3 4 5 |
$ git reflog >>> 96b190b (HEAD -> master) HEAD@{6}: reset: moving to HEAD~2 >>> f4a52eb HEAD@{7}: commit: +main04 >>> 3216290 HEAD@{8}: commit: +main03 |
二. git checkout
這個指令會把目前的 HEAD 移到指定的 commit 上,並且把目前的狀態變成當時 commit 的樣子,但是不會移動任何分支(也就是分支都停在原來的地方,只有 HEAD 移動而已)。
因此,整個歷史紀錄看起來並沒有什麼變化,只是 HEAD 暫時移到某個地方而已。
1 |
$ git checkout HEAD~1 # 數字表示移動到 HEAD後面第幾個 |
如果想在這個版本修改資料,可以建立新的分支,修改完後再 merge 回主線。
1 |
$ 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 入門
- [Git教學] 寫給 Git 初學者的入門 4 步驟
- [Git教學] 分支合併: merge 與 rebase 差異
- [Git教學] Git 時光機回復版本的 2 種方法 reset & checkout
- [Git教學] 如何設定 Git 快捷鍵指令
其他相關延伸閱讀:
- Visual Studio Code 必備的 5 個擴充和小常識
- [Python教學] 使用 pyenv 和 virtualenv 打造 Python 環境配置
- [Python教學] pip install 指令大全
- [Python教學] 寫給新手的 Python 入門基礎操作
那 [Git教學] Git 時光機回復版本的 2 種方法 reset & checkout 就到這邊,感謝收看,如果有任何問題歡迎留言唷!