本篇不适用于新手,适合有一定基礎但是沒怎麼用過復原的同學
1. 本地commit前
1.1 本地add前
add之前若想回退,使用
checkout
指令:
git checkout -- <檔案路徑或.>
1.2 本地add後
使用reset指令
git reset HEAD <檔案路徑或.>
2. 本地commit後
2.1 建立一個新的版本進行回退
使用revert指令
git revert <tag或者版本号>
2.2 不可逆式回退
使用
reset
指令
git reset --hard <tag或版本号>
2.3 僅僅修改commit注釋不回退
git commit --amend
這個指令在Windows下會打開預設編輯器,編輯第一行然後儲存、關閉即可更新目前commit的備注。
3. reset指令
這個指令屬于不可逆式撤銷,有多個選項
- ① --soft
例如指令
git reset --soft HEAD^
僅僅撤銷目前commit,代碼仍然保留。即撤銷commit,不撤銷add。(恢複到
git add .
執行完畢的狀态)
- ② --mixed
git reset --mixed HEAD^
不删除代碼。撤銷commit,也撤銷add。(恢複到
git add .
執行前的狀态,即編寫完代碼并未暫存)
- ③ --hard
git reset --hard HEAD^
删除代碼,撤銷commit,也撤銷add。
等價于恢複到上一個commit的狀态,過程不可逆。(恢複到上一版本,并且目前版本所有資料删除)
HEAD
上面提及的HEAD^等于恢複到上一版本,下面兩個寫法相同
git reset <參數,例如--soft> HEAD^
git reset <參數,例如--soft> HEAD~
如果要回退2個版本,可以這麼寫:
git reset <參數,例如--soft> HEAD~2
參考文檔
[1]. git中文官方文檔