記一次commit回退

背景

以前改完代碼匆匆push到我fork的倉庫上。而後才發現有個commit提交了一些不應提交的配置文件。git

怎麼解決

想要把這個commit去掉,我是直接: 緩存

git revert 001c67(001c67是你要回退到指定歷史的版本號)指針

而後push到遠程指定分支上:源碼

git push origin masterit

git revert說明

git revert是用一個新commit來消除一個歷史commit所作的修改,revert 以後你的本地代碼會回滾到指定的歷史版本。也就是說revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 HEAD 是一直向前的。ast

git reset

若是是要去掉還沒push的commit,建議仍是用reset,具體操做:配置

git reset --hard 001c67(你要幹掉的commit的版本號)file

這個命令表示:完全回退到某個版本,本地的源碼也會變爲上一個版本的內容總結

 

git reset的默認方式是:git reset --mixed,當它回退到某個版本時,只保留源碼,回退commit和index信息配置文件

 

還有一種是git reset --soft:它回退到某個版本時,只回退了commit的信息,不會恢復到index file一級。若是還要提交,直接commit便可

 

簡單總結一下,其實就是三個不一樣的恢復等級,--soft 、--mixed以及--hard。使用--soft就僅僅將頭指針恢復,已經add的緩存以及工做空間的全部東西都不變。若是使用--mixed,就是將頭指針恢復掉,已經add的緩存會丟失掉,工做空間的代碼什麼的是不變的。若是使用--hard,那麼一切就全都恢復了。

 

git reset比較經常使用的場景:合併最近幾個commit:

好比我提交了5個commit,這時候我想把這5個commit做爲一個commit提交到遠程分支,能夠先把那5個commit撤下來,以下:
git reset HEAD~5
上面命令是指撤下最近的5個commit, 撤下來之後,這5個commit相關的文件都在工做臺了,只須要從新add,commit,便可。
注意: 若是commit已經push到遠程分支了,這時候咱們撤下來再push會失敗,須要加上-f,如:
git push -f origin xxx_dev

相關文章
相關標籤/搜索