git push提交到遠程倉庫後如何撤銷回退

前言

我們在使用Git進行版本控制時,有可能會出現這種情況。git push後發現提交的內容不是想要的,這時候我們怎麼做呢,提交上去的內容是沒有刪除按鈕的(比如github,或碼雲)。所以我們需要一些手段將提交上去內容撤銷下來。

解決

首先將本地的內容回退到自己想要的版本。回退版本我一般使用

git reset

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

    git reset --hard
    git reset --soft

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

git reflog

在這裏插入圖片描述

看到沒前面那一串數字就是commits,所以git reset可以看成不產生commits,它只是改變了當前HEAD指向的commits。

    git reset --soft
    git reset --hard

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

然後再來看回退,如果只是回退到上個版本可以使用

    git reset --soft xx版本號xxxx
    git reset --hard xx版本號xxx

也可以使用

    git reset --soft HEAD~1
    git reset --hard HEAD~1

因爲前面說了HEAD就代表當前,所以上一個版本其實就是當前-1,我們也可以用

 git reset HEAD

試一試,並不會有什麼變化,因爲HEAD就是當前。這裏我們先使用

git reset –soft HEAD~1

我們可以知道其實HEAD已經指向上一個commits了,我們可以是用git reflog驗證下

《git push提交成功後如何撤銷回退》

我們再使用git status看看,發現沒,代碼還在緩存區中
《git push提交成功後如何撤銷回退》
這時候就好辦了,我們選擇很多,可以直接修改代碼,再commit,也可以取消git add 命令,指令如下

    git rm –cached xxx文件名xxx
    git rm

至於這兩者的區別看這裏吧[GIT]代碼在GIT ADD之後如何取消
ok 到現在爲止,本地的版本已經達到我們想要的了,現在只需要改變遠程倉庫的版本了,對的,我們只需要在git commit 後,再使用 git push origin 分支名 就可以將新的代碼覆蓋掉遠程倉庫版本代碼,這樣子就達到了撤銷遠程倉庫代碼一樣的效果,但是這裏有點點問題,先接着看吧
《git push提交成功後如何撤銷回退》
提交失敗,因爲當前分支的版本低於遠程分支的版本,所以要想覆蓋掉它,必須使用force

  git push origin 分支 --force
    ok,大功告成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章