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

2021-10-01 07:24:40 字數 2044 閱讀 4170

前言

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

解決

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

git reset

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

git reset --hard

git reset --soft

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

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

git reset --soft

git reset --hard

前者表示只是改變了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 ***檔名***

gitrm

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

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

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

git push origin 分支 --force

ok,大功告成

Git修改檔案後提交到遠端倉庫

修改檔案後檔名會出現紅色嘆號,表示該檔案已經修改,這時候如果要推送到遠端倉庫,只需要執行一下命令即可 命令彙總 1 git status 檢視git是否有修改內容需要提交 2 git add 指向需要提交的內容檔案 3 git commit 提交到本地庫 4 git push origin mast...

Git 提交到遠端倉庫

git 詳盡教程 sudo mkdir m 755 localstorage cd localstorage 建立本地倉庫 sudo git init登入 github 建立 新增遠端倉庫 git remote add remoteqps git github.com grayvtouch qps....

Git提交到多個遠端倉庫

隨著github的普及和流行,現在程式設計師可能都習慣把 託管到類似github的遠端倉庫中。毫無疑問,github是最受歡迎的託管平台。但是由於網路等種種原因,github在國內的訪問並不穩定。於是國內各種託管平台應運而生,比較知名的有開源中國 coding等。很多國內程式設計師會把 託管到多個平...