更新時(shí)間:2022-06-22 來(lái)源:黑馬程序員 瀏覽量:
1、解決思路
工作區(qū)和暫存區(qū)內(nèi)容的撤銷,直接按照對(duì)應(yīng)命令或者IDEA界面完成操作就行。
對(duì)于已提交的撤銷回滾建議如下:
1. 代碼如果僅僅是回撤到指定版本,該版本之上的更新是不需要的,選擇Hard模式。
2. 代碼回撤到指定版本時(shí),需要保存該版本之上的更新,可以選擇Soft模式。
其他根據(jù)自己的需要選擇即可。
2、動(dòng)手實(shí)踐
2.1、基于IDEA解決
1)撤銷工作區(qū)內(nèi)容
變更內(nèi)容可以在Git工具窗口中直接撤銷,如下圖:
或者右鍵的文件,選擇Git,然后選擇Rollback也可以完成撤銷。
2)撤銷暫存區(qū)文件
IDEA中做代碼更新后,可以不用額外的做暫存,直接提交就行了。所以可以不用考慮暫存撤銷的問(wèn)題。
3)已提交的撤銷
IDEA中要撤銷版本回到上一版本,或者回退到指定版本可以如下操作:
1. 打開(kāi)Git工具窗口,點(diǎn)擊Log 查看版本提交記錄
2. 然后右鍵你需要回退的版本,選擇Rest Current Branch to Here
3. 此時(shí)會(huì)彈出一個(gè)菜單,供我們選擇,選擇需要的操作模式,然后點(diǎn)擊Reset即可
撤銷模式說(shuō)明:
四種模式在撤銷回滾時(shí),都會(huì)讓HEAD指針改變指向到指定版本。
1. Soft:回滾代碼到指定版本時(shí),工作區(qū)文件不會(huì)做改變,相較于指定版本多出的更新將會(huì)被暫存等待提交
2. Mixed:回滾代碼到指定版本時(shí),工作區(qū)文件不會(huì)有改動(dòng),但是暫存會(huì)被清空
3. Hard:回滾到指定版本時(shí),工作區(qū)內(nèi)容會(huì)回滾到指定版本,暫存也會(huì)被清空(慎重,未提交的代碼有丟失風(fēng)險(xiǎn))
4. Keep:回滾到指定版本時(shí),工作區(qū)內(nèi)容會(huì)回滾到指定版本,暫存區(qū)未提交內(nèi)容會(huì)保存
2.2、基于Git命令解決
1)工作區(qū)內(nèi)容撤銷
命令:`git checkout -- fileName`
例如,對(duì)readme.txt 進(jìn)行內(nèi)容修改,保存文件。此時(shí)在Git Bash 中執(zhí)行 `git status`看效果。
上面有提示我們?nèi)绾芜M(jìn)行撤銷,現(xiàn)在我們撤銷readme.txt的修改:
2)已暫存撤銷
命令:
`git reset HEAD file` 移除暫存區(qū)回到工作區(qū),內(nèi)容在工作區(qū)中還是存在的
例如,對(duì)readme.txt 進(jìn)行內(nèi)容修改并已經(jīng)暫存。現(xiàn)在需要撤銷
此時(shí)在Git Bash 中執(zhí)行 `git status`看效果。
上面有提示我們?nèi)绾芜M(jìn)行撤銷暫存,現(xiàn)在我們撤銷readme.txt的暫存:
3)已提交撤銷
當(dāng)前知識(shí)點(diǎn)能夠解決你在以后遇到的如下問(wèn)題,
1. 想要查看歷史提交版本信息
2. 出于某些原因,想要將代碼回撤重置到指定版本
我們可以使用 git reset 命令來(lái)進(jìn)行版本回退,而且可以指定退回到之前某一次提交的版本
命令:
```
git reset [--soft | --mixed | --hard --keep] [HEAD|版本號(hào)]
```
下面要完成以下操作:
1)重置到上一個(gè)版本(當(dāng)前提交撤銷)
命令:`git reset --hard HEAD^`
HEAD參數(shù)說(shuō)明:
- `git reset --hard HEAD` 撤銷暫存內(nèi)容
- `git reset --hard HEAD^` 撤回到上一個(gè)版本
- `git reset --hard HEAD^^` 撤回到上上個(gè)版本
- 以此類推
如果要回退到指定版本,建議用下面的方式。
2)重置指定版本
命令:
1. 查看版本號(hào)命令
`git reflog`
2. 按照版本號(hào)進(jìn)行重置
`git reset --hard 版本編號(hào)`
Java培訓(xùn):項(xiàng)目發(fā)布前如何打tag標(biāo)簽及標(biāo)簽命名規(guī)范
2022-06-22Java培訓(xùn):git實(shí)戰(zhàn)技巧-如何同時(shí)撤回遠(yuǎn)程和本地分支合并操作
2022-06-22Java培訓(xùn):git實(shí)戰(zhàn)技巧-如何將暫存區(qū)的多個(gè)功能代碼分成多次提交
2022-06-22Java培訓(xùn):feature分支開(kāi)發(fā)到一半時(shí)切換到bugfix分支,如何暫存數(shù)據(jù)
2022-06-22Java培訓(xùn)話題:學(xué)會(huì)java能干什么?
2022-06-20字節(jié)流與字符流之間如何實(shí)現(xiàn)轉(zhuǎn)換?
2022-06-15