Git中撤銷提交

zhuxiaoxi發表於2018-04-12

Git的幾種狀態

未修改
       原始內容
已修改    ↓   
       工 作 區
已暫存    ↓    git add
       暫 存 區
已提交    ↓    git commit
       本地倉庫
已推送    ↓    git push
       遠端倉庫

注意:下面所有命令每一個程式碼段是相互獨立的,為了解決一個問題,請不要使用多個程式碼段。所有命令均經過本人測試,由於測試環境是簡單的Git倉庫沒有過多的資料,可能在複雜環境回出現錯誤。如發現問題請直接評論區指出。請仔細分析使用情況,丟失資料與本人無關。

已修改 未暫存

已經修改了檔案,還未進行git add
即工作區的內容不想要了。

恢復方法

使用以下任意命令

git checkout .
git checkout -- <FILENAME>
git reset --hard

已暫存 未提交

已經進行了git add,還未進行git commit
即暫存區的內容不想要了

恢復方法

使用以下任意命令

git reset
git checkout .
git reset --hard
git reset HEAD
git reset HEAD -- <FILENAME>

已提交 未推送

已經進行了git commit,還未進行git push

恢復方法

使用遠端倉庫覆蓋本地倉庫

git reset --hard origin/master

已推送

已經進行了git push

恢復方法

回滾本地倉庫,強制推送覆蓋遠端倉庫

git reset --hard HEAD^
git push -f

其他情況

丟棄某個節點後的全部提交

即HEAD指標指向該節點

git reset --hard <COMMITID>

相關文章