問題:我們在使用git本地commit時,如果commit了好多次沒有push,又想把最後一次或者最近幾次commit的不想push了,可以用下面的方法撤銷(推薦使用第一種)。
注意:git 只能撤銷最後一次或者最後多次的commit,不能只撤銷中間的某一次!!!
解決辦法:
(1)最方便,不需要commit_id:使用命令 git reset --hard head~1
hard表示撤銷commit,並且回退本地代碼,如果只是想撤銷commit操作而不回退代碼,將--hard改爲--soft即可;
1表示回退最後一次commit,想回退最後兩次改爲2即可。
(2)先獲取commit操作的commit_id : git log
每一次commit操作都會有一個commit_id
然後使用命令:git reset --soft 0d1bc96289a2e7fdda6a2323f4b781593ae6a72f
表示撤銷0d1bc96289a2e7fdda6a2323f4b781593ae6a72f 之後的0d1bc96289a2e7fdda6a2323f4b781593ae6a72f 的commit操作不撤回;若想將代碼也回退,使用--hard。
(3)idea裏面操作
跟2一樣,也先獲取commit_id
然後找到idea裏面的reset Head
選擇回退方式
git reset --mixed:此爲默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
git reset --soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
git reset --hard:徹底回退到某個版本,本地的源碼也會變爲上一個版本的內容,此命令 慎用!
然後輸入上一個或者上幾個要撤銷那個commitId
最後點擊reset按鈕就可以了。