01
項(xiàng)目開發(fā)中,時(shí)常會(huì)遇到這樣一種情況,代碼已經(jīng)commit(非push)上去了,但此時(shí)發(fā)現(xiàn)有誤,不想提交了,如何回滾?
這點(diǎn)對(duì)于新手git的開發(fā)者還是比較陌生的。
今天和大家分享這個(gè)知識(shí)點(diǎn),如果你對(duì)git用法很熟練,請(qǐng)?zhí)^。
首先我們來看還沒有commit任何代碼的push界面:
然后我們隨便修改一份文件,我這里修改MainActivity.java的內(nèi)容,且執(zhí)行了commit操作:
如果這時(shí)候我們發(fā)現(xiàn)剛才commit的有誤,不想提交了,想對(duì)其進(jìn)行回滾,如何進(jìn)行revert commit了。
通過選中工程(或是直接選擇MainActivity.java文件),點(diǎn)擊右鍵,在彈出的列表中選擇Git-->Repository-->Reset HEAD
其中
Git Root:表示要revert的目錄
Current Branch:當(dāng)前分支branch
Reset Type:
Soft:選擇這個(gè)模式意思是僅僅撤銷commit而已,不影響本地的任何文件,也不影響(index)緩存區(qū)的任何文件。
Hard:不僅撤銷commit的內(nèi)容,還將本地的文件指向commit前的版本,同時(shí)index也會(huì)指向commit前的版本。
Mixed:回滾index,其余的保持不變。
如果把HEAD后面加個(gè)“~1”,這里的數(shù)字代表次數(shù),比如commit了三次, 1,就是回滾最后一次提交的,2,就是后兩次提交的一起回滾了。
官方文檔是這樣描述的:Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.
Validate:當(dāng)前會(huì)影響到的文件有哪些,具體是什么。
當(dāng)我們執(zhí)行下soft模式的,執(zhí)行完成后,看下圖,剛才我們commit的記錄已經(jīng)沒有了:
如果你不喜歡可視化的,習(xí)慣用命令行處理,命令行實(shí)現(xiàn)也是一樣的:
git reset [--soft | --mixed [-N] | --hard] HEAD~X
其中X:代表次數(shù)。
希望對(duì)你學(xué)習(xí)有所幫助
【END】
聯(lián)系客服