iT邦幫忙

2021 iThome 鐵人賽

DAY 23
3
Modern Web

曼曼來比較快_Git 版本控制系列 第 23

【Day23】Git 版本控制 - 修改 commit 紀錄:reset

  • 分享至 

  • xImage
  •  

上一次有提到說,修改 commit 的方式有以下幾種:

  1. 把 .git 目錄整個刪除,暴力破解法,請不要輕易嘗試謝謝。
  2. 使用 git rebase 來修改歷史。
  3. 先把 Commit 用 git reset 拆掉,整理後再重新 Commit。
  4. 使用 --amend 參數來修改最後一次的 Commit。

已經介紹完 rebase,接下來就來講解 reset 吧!

git reset

當我們第一眼看到 reset 會直覺反應是重新設定的意思,但其實在 git 中的 reset 反而是 go to、become 的意思,為什麼會這樣講呢?我們透過實際例子來看看

如果你想修改的是「上一次」的紀錄,那麼你可以使用以下兩種指令

git reset master^

或

git reset HEAD^

masterhead 後面接著的 ^ 代表的意思就是「上一次」

倘若你想修改的是「非上一次」的紀錄,必須先使用 git log --oneline 查詢 SHA-1 碼,然後使用的指令如下:

git reset <SHA-1>

那為什麼會說在 git 裡的 reset 是 go to、become 的意思呢?

因為上面的指令如果翻成白話文的話是「請幫我移動到我指定的位置」,原本那些 commit 都還是在,並沒有消失不見,只是暫時隱藏起來而已,隨時都可以再找回來。

Reset 模式

git reset 也可以搭配參數使用,而他有三種比較常見的模式:--mixed--soft 以及 --hard

mixed

mixed 是預設的參數,如果沒有輸入的話就是以此模式進行,這個模式會把暫存區的檔案丟掉,但不會動到工作目錄的檔案,也就是說 Commit 拆出來的檔案會留在工作目錄,但不會留在暫存區。

soft

soft 模式則是不管是暫存區還是工作目錄的檔案都不會被刪掉,只有 HEAD 的移動而已。也因此,Commit 拆出來的檔案會直接放在暫存區。

hard

hard 模式的話,就是暫存區還是工作目錄的檔案都會被刪掉,但如果不小心使用 hard 模式又後悔了怎麼辦!沒關係,還是有辦法救回來,詳情請見這篇文章

Reference

【狀況題】剛才的 Commit 後悔了,想要拆掉重做…


上一篇
【Day22】Git 版本控制 - 修改 commit 紀錄:rebase
下一篇
【Day24】Git 版本控制 - 修改 commit 紀錄:amend
系列文
曼曼來比較快_Git 版本控制30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言