上班之後開始比較常用到git reset了…
使用
如果想要還原到某次commit時的狀態,可以使用git reset 相對/絕對
相對
如果是想要回到目前分支上的兩次commit前,可以使用最後一次commit的SHA-1值, 搭配^
符號, 使用一個代表回到最後一次之前的上一次, 使用兩次代表上上一次, 以此類推
假設最後一次commit紀錄的SHA-1為5c79da36git reset 5c79da36^
回到上一次
如果想要倒退很多次的話, 就不用^
符號, 而是使用~
號, 搭配次數git reset 5c79da36~5
倒退五次
絕對
如果已經確定要回到哪次commit時的狀態, 就直接寫上SHA-1git reset 5c79da36
回到5c79da36
那時的commit狀態
參數
mixed
預設,丟掉暫存區的檔案, 但不更動目前工作目錄的檔案。commit拆出來的檔案會進到工作目錄。--soft
暫存區和工作目錄中的檔案都不更動,看起來只有head移動了而已。commit拆出來的檔案會進到暫存區。--hard
不管是工作目錄還是暫存區的檔案都會被更動。commit拆出來的檔案會被丟棄。
sourcetree
選擇想要倒退到的commit, 右鍵後選擇reset (branch name) to this commit
接下來會跳出提醒視窗, 預設為Mixed - keep working copy but reset index
, 先直接選, 接著就會倒退到指定位置了
注意
reset並不是真的刪除了commit的檔案, 這些都能再撿回來, 它的任務更像是前往到過去某時間點的commit