天天看點

git 版本回退 速查

本篇不适用于新手,适合有一定基礎但是沒怎麼用過復原的同學

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中文官方文檔