前言我們在使用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等。很多國內程式設計師會把 託管到多個平...