更新時間:2022-06-22 來源:黑馬程序員 瀏覽量:
1、解決思路
工作區(qū)和暫存區(qū)內容的撤銷,直接按照對應命令或者IDEA界面完成操作就行。
對于已提交的撤銷回滾建議如下:
1. 代碼如果僅僅是回撤到指定版本,該版本之上的更新是不需要的,選擇Hard模式。
2. 代碼回撤到指定版本時,需要保存該版本之上的更新,可以選擇Soft模式。
其他根據自己的需要選擇即可。
2、動手實踐
2.1、基于IDEA解決
1)撤銷工作區(qū)內容
變更內容可以在Git工具窗口中直接撤銷,如下圖:
或者右鍵的文件,選擇Git,然后選擇Rollback也可以完成撤銷。
2)撤銷暫存區(qū)文件
IDEA中做代碼更新后,可以不用額外的做暫存,直接提交就行了。所以可以不用考慮暫存撤銷的問題。
3)已提交的撤銷
IDEA中要撤銷版本回到上一版本,或者回退到指定版本可以如下操作:
1. 打開Git工具窗口,點擊Log 查看版本提交記錄
2. 然后右鍵你需要回退的版本,選擇Rest Current Branch to Here
3. 此時會彈出一個菜單,供我們選擇,選擇需要的操作模式,然后點擊Reset即可
撤銷模式說明:
四種模式在撤銷回滾時,都會讓HEAD指針改變指向到指定版本。
1. Soft:回滾代碼到指定版本時,工作區(qū)文件不會做改變,相較于指定版本多出的更新將會被暫存等待提交
2. Mixed:回滾代碼到指定版本時,工作區(qū)文件不會有改動,但是暫存會被清空
3. Hard:回滾到指定版本時,工作區(qū)內容會回滾到指定版本,暫存也會被清空(慎重,未提交的代碼有丟失風險)
4. Keep:回滾到指定版本時,工作區(qū)內容會回滾到指定版本,暫存區(qū)未提交內容會保存
2.2、基于Git命令解決
1)工作區(qū)內容撤銷
命令:`git checkout -- fileName`
例如,對readme.txt 進行內容修改,保存文件。此時在Git Bash 中執(zhí)行 `git status`看效果。
上面有提示我們如何進行撤銷,現在我們撤銷readme.txt的修改:
2)已暫存撤銷
命令:
`git reset HEAD file` 移除暫存區(qū)回到工作區(qū),內容在工作區(qū)中還是存在的
例如,對readme.txt 進行內容修改并已經暫存。現在需要撤銷
此時在Git Bash 中執(zhí)行 `git status`看效果。
上面有提示我們如何進行撤銷暫存,現在我們撤銷readme.txt的暫存:
3)已提交撤銷
當前知識點能夠解決你在以后遇到的如下問題,
1. 想要查看歷史提交版本信息
2. 出于某些原因,想要將代碼回撤重置到指定版本
我們可以使用 git reset 命令來進行版本回退,而且可以指定退回到之前某一次提交的版本
命令:
```
git reset [--soft | --mixed | --hard --keep] [HEAD|版本號]
```
下面要完成以下操作:
1)重置到上一個版本(當前提交撤銷)
命令:`git reset --hard HEAD^`
HEAD參數說明:
- `git reset --hard HEAD` 撤銷暫存內容
- `git reset --hard HEAD^` 撤回到上一個版本
- `git reset --hard HEAD^^` 撤回到上上個版本
- 以此類推
如果要回退到指定版本,建議用下面的方式。
2)重置指定版本
命令:
1. 查看版本號命令
`git reflog`
2. 按照版本號進行重置
`git reset --hard 版本編號`