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

2021-09-24 08:33:58 字數 1676 閱讀 6318

我們在使用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。

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

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

git reset --soft xx版本號***x git reset --hard xx版本號***

也可以使用

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 status看看,發現沒,**還在快取區中

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

git rm --cached ***檔名*** git rm

至於這兩者的區別看這裡吧[git]**在git add之後如何取消

ok 到現在為止,本地的版本已經達到我們想要的了,現在只需要改變遠端倉庫的版本了,對的,我們只需要在git commit 後,再使用 git push origin 分支名 就可以將新的**覆蓋掉遠端倉庫版本**,這樣子就達到了撤銷遠端倉庫**一樣的效果,但是這裡有點點問題,先接著看吧

提交失敗,因為當前分支的版本低於遠端分支的版本,所以要想覆蓋掉它,必須使用force

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

git push成功提交後如何撤銷或回退版本

commits 版本號,在git中扮演了乙個重要角色,即平常用的一些操作如git clone git checkout,git commit,git reset,git pull 都會產生commits,但是git reset並不會產生commits 使用如下命令可檢視自己專案中的commits,如...

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

前言 我們在使用git進行版本控制時,有可能會出現這種情況。git push後發現提交的內容不是想要的,這時候我們怎麼做呢,提交上去的內容是沒有刪除按鈕的 比如github,或碼雲 所以我們需要一些手段將提交上去內容撤銷下來。解決 首先將本地的內容回退到自己想要的版本。回退版本我一般使用 git r...

Git Push大檔案報錯後如何撤回

昨晚在提交乙個專案 時,不小心把資料庫備份檔案也一起commit了 到最後push的時候報錯了。最後弄了半天解決了,在此記錄下。如下圖,檔案有108m。專案放在第三方託管平台上,根據提示檢視了原因。後來看了下像單個檔案最大不超過50m。網上找處理方法,有很多種。比如刪除提交過大的檔案 git fil...