git reset

git reset

上班之後開始比較常用到git reset了…

使用

如果想要還原到某次commit時的狀態,可以使用
git reset 相對/絕對

相對

如果是想要回到目前分支上的兩次commit前,可以使用最後一次commit的SHA-1值, 搭配^符號, 使用一個代表回到最後一次之前的上一次, 使用兩次代表上上一次, 以此類推

假設最後一次commit紀錄的SHA-1為5c79da36
git reset 5c79da36^
回到上一次
如果想要倒退很多次的話, 就不用^符號, 而是使用~號, 搭配次數
git reset 5c79da36~5
倒退五次

絕對

如果已經確定要回到哪次commit時的狀態, 就直接寫上SHA-1
git reset 5c79da36
回到5c79da36那時的commit狀態

參數

  1. mixed
    預設,丟掉暫存區的檔案, 但不更動目前工作目錄的檔案。commit拆出來的檔案會進到工作目錄。

  2. --soft
    暫存區和工作目錄中的檔案都不更動,看起來只有head移動了而已。commit拆出來的檔案會進到暫存區。

  3. --hard
    不管是工作目錄還是暫存區的檔案都會被更動。commit拆出來的檔案會被丟棄。

sourcetree

選擇想要倒退到的commit, 右鍵後選擇reset (branch name) to this commit

接下來會跳出提醒視窗, 預設為Mixed - keep working copy but reset index, 先直接選, 接著就會倒退到指定位置了

注意

reset並不是真的刪除了commit的檔案, 這些都能再撿回來, 它的任務更像是前往到過去某時間點的commit

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×