今天,在修改代碼的時候,因為不注意,把不需修改分支的代碼修改并提交的本地了,在將要提交到遠程倉庫這千鈞一發(fā)之際發(fā)現(xiàn)分支不對,于是就想把已經(jīng)commit(提及到本地)的代碼回滾到本地改動。有問題,問“度娘”嘛,于是轉了上述文章,正文:
快速解決:
1.首先,鼠標右鍵項目-->Git-->Reponsitory-->Reset HEAD。
2.執(zhí)行下面的操作,Reset Type選擇 Soft 表示保存所有的提交操作,^表示退回到上一次提交。

圖1
詳細解決:
對于commit(不是 push)的代碼如何回滾,這塊對于剛轉到 git 的開發(fā)者還是比較陌生的。今天我來說下這塊的內容:
按照慣例,先上圖,下圖是還沒有 commit 任何代碼的 push 界面,這個時候是沒有 commit 任何內容的:

然后我修改了
string.xml 的內容,并且執(zhí)行了commit 操作:

接下來就要說如何進行
revert commit 了,通過選中工程,點擊右鍵,在彈出的列表中選擇 Git-->Repository-->Reset HEAD...,之后出現(xiàn)如下圖所示:

這邊對上圖進行分析:
-
Git Root:選擇你要
revert的目錄。 -
Current Branch:你當前在哪個
branch。
Reset Type:
-
Soft:選擇這個模式意思是僅僅撤銷
commit而已,不影響你本地的任何文件,也不影響(index)緩存區(qū)的任何文 件。 -
Hard:不僅撤銷
commit的內容,還將本地的文件指向你commit前的版本,同時index也會指向commit前的版本。 -
Mixed:這個模式從我個人角度來看其實還是有點模糊的。從我的角度理解就是只是回滾
index,其余的都不變。
-
To Commit:填寫
HEAD后面加個“~1”。
但是這邊跟大家說下,如果你把 `HEAD` 后面加個 `“~1” `,這里的數(shù)字代表的是次數(shù),
比如你` commit` 了三次, 你寫 `1` ,就是回滾最后一次提交的,
如果是 `2` ,就是后兩次提交的都回滾。這時候你會發(fā)現(xiàn)它的功能和 `soft `這個模式一樣了。
官方說法: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:這個選項是看當前會影響到的文件有哪些,具體影響是什么。
[圖片上傳中...(image.png-27c455-1547462776066-0)]
我這邊執(zhí)行下 soft 模式的,執(zhí)行完成后,剛 commit 的記錄已經(jīng)沒了,并且曾經(jīng) commit 的文件,已經(jīng)回到本地改動。
命令行解決:
git reset [--soft | --mixed [-N] | --hard] HEAD~X X:代表次數(shù)