一.撤消:代碼還只在本地,未push到運程倉庫,想把代碼還原到上一次commit的代碼,此時操作爲代碼撤銷
git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]
二.回滾:代碼已經push到運程倉庫,想把代碼還原到上一次提交,此時操作爲代碼回滾
處理方式:
1)先查看git提交日誌,找到上次提交的信息,輸入命令 git log (查看全部日誌)或 git log -xx(查看最近xx條日誌),也可以藉助git插件查看提交的
commit的ID標識
$ git log -5
commit 508a8e76560d95a2f7c87753df4e9c604950f900
Author: xxxx
Date: Thu Apr 2 16:26:01 2020 +0800
提交說明
commit 508a8e76560d95a2f7c87753df4e9c604950f900
Author: xxxx
Date: Thu Apr 2 16:26:01 2020 +0800
提交說明
2)回滾到指定的版本(hard後面接的是commit的ID標識,也就是想回滾到的版本)
## 回退到指定版本,不保留原更改代碼
git reset --hard 508a8e76560d95a2f7c87753df4e9c604950f900
## 回退到指定版本,保留原更改代碼,且生成新的提交
git revert 508a8e76560d95a2f7c87753df4e9c604950f900
3)強制提交(這個時候已經將代碼回退了,你現在的分支狀態就處於你要恢復到提交版本)
git push --force
4)如果你只是誤提了代碼,想保留代碼改動的話,那就在2)的時候使用revert 命令,而不是reset,兩者區別如下:
- revert 是放棄指定提交的修改,但是會生成一次新的提交,需要填寫提交註釋,以前的歷史記錄都在;
- reset是指將HEAD指針指到指定提交,歷史記錄中不會出現放棄的提交記錄。
5)示例
git status 查看當前分支狀態
git log 查看提交歷史
git reset *** 根據提交歷史ID回滾代碼至上一次提交(參考上文)
git push --force 將代碼強制發佈