Git恢復(fù)之前版本的三種方法之reset、revert、rebase詳解
一. 問題描述
在利用github實(shí)現(xiàn)多人合作程序開發(fā)的過程中,我們有時(shí)會(huì)出現(xiàn)錯(cuò)誤提交的情況,此時(shí)我們希望能撤銷提交操作,讓程序回到提交前的樣子
本文總結(jié)了三種解決方法:
- 回退(reset)
- 反做(revert)
- 回扣(rebase)
二. 解決方案
方法一:git reset
原理: git reset的作用是修改HEAD的位置,即將HEAD指向的位置改變?yōu)橹按嬖诘哪硞€(gè)版本
具體實(shí)現(xiàn):
- 查看版本號 使用命令“git log”查看:
- 使用“git reset --hard 目標(biāo)版本號”命令將版本回退:
- 再用“git log”查看版本信息,此時(shí)本地的HEAD已經(jīng)指向之前的版本:
- 使用“git push -f”提交到遠(yuǎn)程更改
- 注意: 此時(shí)如果用“git push”會(huì)報(bào)錯(cuò),因?yàn)槲覀儽镜貛霩EAD指向的版本比遠(yuǎn)程庫的要舊
方法二:git revert
原理:
git revert是用于“反做”某一個(gè)版本,以達(dá)到撤銷該版本的修改的目的。
比如,我們commit了三個(gè)版本(版本一、版本二、 版本三),突然發(fā)現(xiàn)版本二不行(如:有bug),想要撤銷版本二,但又不想影響撤銷版本三的提交,就可以用 git revert 命令來反做版本二,生成新的版本四,這個(gè)版本四里會(huì)保留版本三的東西,但撤銷了版本二的東西。
適用場景:
如果我們想撤銷之前的某一版本,但是又想保留該目標(biāo)版本后面的版本,記錄下這整個(gè)版本變動(dòng)流程,就可以用這種方法。
具體實(shí)現(xiàn):
1.查看 使用命令“git log”查看commit提交記錄
2.使用“git revert 版本號”反做,并使用“git commit -m 版本名”提交
3.使用“git push”推上遠(yuǎn)程庫
方法三:git rebase -i (commit-id) 或 git rebase -i HEAD~(回退幾步)
1.查看 使用命令“git log”查看commit提交記錄
2.git rebase -i (commit-id) 選擇回退版本之前的一次commit版本
3.編輯文件命令行輸入 a,切換到編輯模式 將要?jiǎng)h除的commit之前的 pick 單詞改為drop
4.按下Esc(退出)鍵 命令行輸入 :wq 保存文件退出
5.使用“git push -f”提交到遠(yuǎn)程更改
6.在使用 git rebase -i (commit-id) 過程中若撤銷回退可以使用 git rebase --abort 撤回
若在 git rebase后出現(xiàn)(xxx|REBASE-i)這種情況
原因:用git推送數(shù)據(jù)到倉庫的時(shí)候會(huì)出現(xiàn)推送失敗
解決方案: 使用git rebase --abort 代碼回退 回到git rebase之前的狀態(tài)
其他操作
一. 當(dāng)代碼庫遠(yuǎn)程遷移后,修改本地代碼關(guān)聯(lián)到遠(yuǎn)程地址
1.遷移前先查看當(dāng)前代碼庫的遠(yuǎn)程地址
git remote -v 查看遠(yuǎn)程地址
2.修改本地代碼關(guān)聯(lián)到的遠(yuǎn)程地址
git remote set-url origin [遠(yuǎn)程地址]
3.查看當(dāng)前代碼庫的遠(yuǎn)程地址是否修改成功
git remote -v 查看遠(yuǎn)程地址
4.將本地的master分支推送到origin主機(jī)
①指定origin為默認(rèn)主機(jī) ,后面就可以不加任何參數(shù)使用git push
git push -u origin master
② 提交本地test分支 作為 遠(yuǎn)程的master分支 ,不指定默認(rèn)主機(jī)
git push origin test:master
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
加速?PyTorch?模型訓(xùn)練的?9?個(gè)技巧(收藏)
本指南從最簡單的結(jié)構(gòu)到最復(fù)雜的改動(dòng)都有,可以使你的網(wǎng)絡(luò)得到最大的好處。我會(huì)給你展示示例Pytorch代碼以及可以在Pytorch-?lightning?Trainer中使用的相關(guān)flags,這樣你可以不用自己編寫這些代碼,感興趣的朋友一起看看吧2022-03-03關(guān)于大型頁游后端管理系統(tǒng)的一點(diǎn)經(jīng)驗(yàn)和個(gè)人見解
做過游戲開發(fā)的人都知道,端游可以用c++,頁游可以用sl或者as3,鑒于這段時(shí)間一直在看網(wǎng)頁游戲開發(fā)的知識(shí),所以關(guān)于游戲開發(fā),我有一點(diǎn)自己的見解2012-06-06vscode設(shè)置多行展示文件標(biāo)簽的操作方法
這篇文章主要給大家介紹了vscode設(shè)置多行展示文件標(biāo)簽的操作方法,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER方法探討
ASP,PHP與.NET偽造HTTP-REFERER方法及防止偽造REFERER方法探討...2007-03-03抓包工具Fiddler的使用方法詳解(Fiddler中文教程)
本文詳細(xì)說明了抓包工具Fiddler的使用方法與各個(gè)面板的功能介紹 每個(gè)按鈕都說明了他的功能,完全可以當(dāng)作Fiddler的中文教程了2018-10-10網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程
這篇文章主要介紹了網(wǎng)站被等惡意鏡像的解決、反制措施詳細(xì)教程,需要的朋友可以參考下2016-10-10