1. git log (找到你想要回退的版本id,將它複製下來)
2. git reset --hard 版本id (本地回退到目標版本)
3.git push --force (推送到遠端倉庫,實現回退)
1. git log (找到你想要刪除的版本id,將它複製下來)
2. git revert 版本id (本地回退到目標版本)
3.git push --force (推送到遠端倉庫,實現回退)
reset與revert最大的區別在於:revert是新提交乙個commit來撤回**,而reset只是回到某個版本的**commit
雖然兩者都能回退到你想要的**,但是對於遠端倉庫,當使用reset回退,其他同事的**pull release拉最新**,拉取到的結果並不會回退你的**,因為pull是fetch與merge的結果,對於已有的commit進行merge是沒有效果的。
而revert是新的commit,此時merge新的commit就能回退到你的**
git branch backup
提測的**(已合入release),決定暫時不上生產,需要回退遠端倉庫的**
舉例如下:b與d的**需要回退,a為線上版本,c為其他同事提交的**
對乙個檔案新增b,c,d的三個修改,分別提交
目標是回退bd剩下ac
2.1 手工修改最新版本**
直接從最新的版本修改**,修改到我們想要版本,然後再提交上去,也就是手工回退。在這個例子中就是直接刪除『bd』後提交
手工改**很容易出錯
(1) 沒有回退所有需要回退的**
(2) 刪除了不需要回退的**
2.2 本地倉庫reset後強推到遠端倉庫,其他同事需手動reset
存在問題:
(1) 需要回退的**夾雜了其他同事的commit,直接reset會把其他同事的**也刪除掉
(2) 遠端倉庫後退後,需要其他同事未回退的同事手動reset它們的本地倉庫,否則其他同事提交會把刪除的**再次提交上去
2.3 拷貝release,遠端倉庫刪除release分支後再覆蓋
與2.2 reset相似:
從要刪除的版本的前乙個版本拉乙個拷貝分支,然後在遠端倉庫刪掉release分支,再將拷貝分支推到遠端release。
存在問題:需要讓其他同事(本地版本領先於回退後的遠端倉庫版本)重拉專案或回退
2.4本地倉庫revert後強推到遠端倉庫
revert作用是消除乙個commit,它的原理是新建乙個commit反向修改目標commit
revert與reset最主要的區別:revert是去除乙個commit,reset是回到某個版本
對於此場景適用revert,我們只要把b與d的提交revert掉,就能達到目的
revert實現的回退,不需要其他同事重拉專案或者手動回退專案
2.5 在gitlab上執行revert
需要注意的是在gitlab上revert,必須是無衝突的時候才成功,在此場景下有衝突就失敗了
(1)回到某個版本,使用reset;消除某個commit,使用revert
(2) 使用git reset實現回退到某個版本,需要讓其他同事也回退或者重拉專案
(3) revert有可能要手動處理衝突,reset沒有這個問題
(4) 對release分支使用git push –force(強制推送)有風險,應該進行備份;或者對自己的分支進行revert,然後提merge request合併到release
(5) 如果沒有revert衝突,建議在gitlab上執行revert
Git 遠端倉庫版本回退
多人合作的專案,同事a誤提了錯誤的東西,並把其他同事修改正確的檔案給覆蓋提交了,線上的專案是有問題的。所以需要回退到同事a的誤提交之前的版本。即遠端倉庫版本回退。步驟 1.使用git log命令檢視歷史提交記錄,選擇要回退的版本號,commit後面一串字元,這裡我們選擇回退到commit 8622e...
git 遠端倉庫版本回退方法
1 問題 如果提交了乙個錯誤的版本,怎麼回退版本?如果提交了乙個錯誤的版本到遠端分支,怎麼回退遠端分支版本?如果提交了乙個錯誤的版本到公共遠端分支,又該怎麼回退版本?3 本地分支版本回退的方法 如果你在本地做了錯誤提交,那麼回退版本的方法很簡單 4 先用下面命令找到要回退的版本的commit id ...
git遠端倉庫版本回退方法
自己的分支回滾直接用reset 公共分支回滾用revert 錯的太遠了直接將 全部刪掉,用正確 替代 如果你在本地做了錯誤提交,那麼回退版本的方法很簡單 先用下面命令找到要回退的版本的commit id git reflog 接著回退版本 gitreset hard obfafd 0bfafd就是你...