git 怎麼回退已經push的版本 git回退版本

2021-10-12 14:58:15 字數 1952 閱讀 9429

前話:在vscode中,安裝git history外掛程式,安裝之後就可以用f1,選擇git:view history(git log),即可看到git的提交記錄。

在每一行的最後面,就是commit_id

git reset

如果回退乙個只是commit的,並沒有push到遠端分支的提交:

則直接執行

git reset --hard commit_id

//回退到commit_id的這次提交

//或者

git reset --hard head^

//回退到上一次提交

//head 等同於當前分支的最新的一次commit提交id

//head^ 是上一次提交

注:如果執行git reset --hard head^ 顯示more?

這是因為在windows的cmd控制台中換行預設符是^,所以more?的意思是問你下一行是否需要再輸入,^符號就被當做換行符了。

解決方法:

//加引號

git reset --hard "head^"

//加^

git reset --hard head^^

//換成~

git reset --hard head~

git reset --hard head~1

//~後面的數字表示回退幾次提交,預設是一次

另外:git reset 還有以下用法:

git reset --soft

git reset --mixed

區別就是:

使用--soft就僅僅將頭指標恢復,已經add的快取以及工作空間的所有東西都不變。也就是執行了git reset --soft 就相當於只回退了git commit -m 這一步,改動的檔案已經在暫存區了。

使用--mixed,就將頭指標恢復,已經add的快取也會丟失掉,工作空間的**什麼的是不變的。也就是執行了git reset --mixed 就相當於回退到了git add之前,改動的檔案還在工作區,沒有add到暫存區。

使用--hard,一切就全都恢復了,頭指標恢復,add的快取消失,工作空間的**什麼的也恢復到以前狀態。也就是相當於你啥都沒幹過,工作區也沒有了

另外,如果已經push到遠端了,怎麼回退?

依舊是先在本地回退,然後推到遠端。

但是如果直接push的話,會push失敗,因為本地的版本落後於遠端的版本。

那就只有強退,加個--force引數

git push origin --force

git revert

回退版本還可以用git revert

如果回退的是乙個只commit還沒有push到遠端的操作:

git revert commit_id 操作不會刪除commit_id這次提交記錄,並且還會新增乙個新的revert的提交記錄。

舉個例子:

如果你依次有commit_id為a、b、c三次提交記錄,並且a和b都已經提交到遠端,c還沒有push到遠端,現在想撤銷c的改動,

則執行git revert c,然後會生成一條d的commit_id,記錄你revert了c。

然後你執行git status,會告訴你你有2次commit沒有push。

然後你執行push到遠端,就會記錄下來你的c、d兩次提交。

如果你revert的是已經push到遠端的提交,會在工作區報衝突,需要你手動撤銷你revert分支之後的改動,然後再次add,commit,push就可以了。

舉個例子:

如果你依次有commit_id為a、b、c三次提交記錄,並且都已經提交到遠端,現在想撤銷b之後的改動,

則執行git revert b,然後工作區會報衝突,報的是a之後的改動和當前的改動有衝突,可以選擇採用傳入的更改,然後接著add,commit,push就可以了。

注意:git reset 後面跟的commit_id 是回滾到這次提交的操作

git revert 後面跟的commit_id 是回滾這次提交

Git撤銷已經push的檔案

撤銷已經push的檔案該怎麼做呢?比如我第一次提交了四個修改的 檔案,然後第二次和第三次又提交了部分修改,但是這兩次修改又不想要了,該怎麼辦呢?首先git branch 檢視當前分支 git log 檢視提交日誌 git reset hard db6cde47b337847c2e2fbc22f9de...

Git 如何遺棄已經 Push 的提交

相信大家都知道,git 相比於 svn,優勢不言而喻,以致於現在大多數公司的專案都在採用 git 進行管理。作為乙個開發人員,對 git 的使用自然應該是得心應手。如果你還不會使用 git 的話,那我勸你還是不要聲張,好好的去學習一番,再自己弄個實驗專案走一下流程,以免遭到同事的鄙視。每個公司都會有...

Git 七 版本回退

現在,你已經學會了修改檔案,然後把修改提交到git版本庫,現在,再練習一次,修改readme.txt檔案如下 git is a distributed version control system.git is free software distributed under the gpl.然後嘗試...