git 撤銷(xiāo)提交

1.寫(xiě)在前面

我們?cè)谑褂肎it進(jìn)行版本控制時(shí),有可能會(huì)出現(xiàn)這種情況。git push后發(fā)現(xiàn)提交的內(nèi)容不是想要的,這時(shí)候我們?cè)趺醋瞿兀峤簧先サ膬?nèi)容是沒(méi)有刪除按鈕的(比如github,或碼云)。所以我們需要一些手段將提交上去內(nèi)容撤銷(xiāo)下來(lái)。

2.解決

首先將本地的內(nèi)容回退到自己想要的版本?;赝税姹疚乙话闶褂?/p>

git reset

其中這條命令中又分為兩種

git reset –hard
git reset –soft

注意上者的區(qū)別,在說(shuō)這兩者區(qū)別前,我們首先要明白一個(gè)東西,commits,它在git中扮演了一個(gè)重要角色,我們平常用的一些操作git clone ,git commit 都會(huì)產(chǎn)生commits,通俗的講這個(gè)就是版本號(hào),但是git reset并不會(huì)產(chǎn)生commits(不是不會(huì)產(chǎn)生,而是會(huì)產(chǎn)生 但是都是一樣的),我們可以先看看自己項(xiàng)目中的commits,使用如下命令

git reflog

這里寫(xiě)圖片描述

看到?jīng)]前面那一串?dāng)?shù)字就是commits,所以git reset可以看成不產(chǎn)生commits,它只是改變了當(dāng)前HEAD指向的commits。

  • git reset –soft
  • git reset –hard

前者表示只是改變了HEAD的指向,本地代碼不會(huì)變化,我們使用git status依然可以看到,同時(shí)也可以git commit提交。后者直接回改變本地源碼,不僅僅指向變化了,代碼也回到了那個(gè)版本時(shí)的代碼,所以使用是一定要小心,想清楚。

然后再來(lái)看回退,如果只是回退到上個(gè)版本可以使用

git reset –soft xx版本號(hào)xxxx
git reset –hard xx版本號(hào)xxx

也可以使用

git reset –soft HEAD~1
git reset –hard HEAD~1

因?yàn)榍懊嬲f(shuō)了HEAD就代表當(dāng)前,所以上一個(gè)版本其實(shí)就是當(dāng)前-1,我們也可以用

git reset HEAD

試一試,并不會(huì)有什么變化,因?yàn)镠EAD就是當(dāng)前。這里我們先使用

git reset –soft HEAD~1

我們可以知道其實(shí)HEAD已經(jīng)指向上一個(gè)commits了,我們可以是用git reflog驗(yàn)證下

這里寫(xiě)圖片描述

我們?cè)偈褂胓it status看看,發(fā)現(xiàn)沒(méi),代碼還在緩存區(qū)中


這里寫(xiě)圖片描述

這時(shí)候就好辦了,我們選擇很多,可以直接修改代碼,再commit,也可以取消git add 命令,指令如下

git rm –cached xxx文件名xxx
git rm

至于這兩者的區(qū)別看這里吧[GIT]代碼在GIT ADD之后如何取消

ok 到現(xiàn)在為止,本地的版本已經(jīng)達(dá)到我們想要的了,現(xiàn)在只需要改變遠(yuǎn)程倉(cāng)庫(kù)的版本了,對(duì)的,我們只需要在git commit 后,再使用 git push origin 分支名 就可以將新的代碼覆蓋掉遠(yuǎn)程倉(cāng)庫(kù)版本代碼,這樣子就達(dá)到了撤銷(xiāo)遠(yuǎn)程倉(cāng)庫(kù)代碼一樣的效果,但是這里有點(diǎn)點(diǎn)問(wèn)題,先接著看吧


這里寫(xiě)圖片描述

提交失敗,因?yàn)楫?dāng)前分支的版本低于遠(yuǎn)程分支的版本,所以要想覆蓋掉它,必須使用force

git push origin 分支 –force
ok,大功告成

注:以上內(nèi)容來(lái)自轉(zhuǎn)載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容