比如我希望把下面的倉庫提交恢復到之前的提交。當然我可以壹次又壹次的還原,但是有沒有更快更簡單的方法呢?
暴力方式
如果妳的倉庫是自己用的(不影響別人),那麽妳可以用gitreset-hard
對於剛才的例子,需要執行的命令是:
//將當前分支備份到backup_commit。
git標簽備份_提交
git推送原始備份_提交
//重置源分支
git重置-硬23801b2
//強制推送以更新遠程分支
git推送原始源-f
溫和的方式
如果妳的倉庫裏有很多人協作,妳會很混亂的使用別人的本地代碼庫,那麽妳只能新建壹個提交,在這個提交裏妳要取消的所有提交都是反向的,那麽具體應該怎麽做呢?該方法如下:
首先,和前面壹樣,使用gitreset-hard23801b2將代碼切換到目標提交的id。接下來,使用gitreset-softorigin/source命令將當前代碼切換回最新提交的代碼。
在執行了上面兩個步驟之後,您的倉庫仍然是最新的提交,但是工作區已經變成了歷史提交。這時可以使用git add和git commit。最終效果如下:
但是看了錢的提醒,這個方法需要保證重置時沒有人重置進行新的提交,如果有,其他人的提交也會被撤銷。所以還是挺危險的。慎用。
雖然很少用到,但是了解它的原理有助於妳理解Git的工作區、臨時存儲區、版本庫中各種指針操作的意義,希望對妳有用。