1. 前言
有些時候我們提交的遠程代碼(最新的代碼)也許還不如上次寫的好,於是我們就想回退到以前的版本。那么怎么回退呢
對了,回退之前還是先備份下。。
2. 版本回退
git log //查看提交的歷史
git log --pretty=oneline //如果嫌上面的輸出信息過多可以使用這條(只輸出版本號)
git reset --hard HEAD^ //回到上個版本,git reset --hard HEAD^^是上上個版本
- 1
- 2
- 3
好了現在你已經回到上個版本了
3. 提交到遠程倉庫
接下來如果你直接提交會發現提交不了, 說遠端做了更改需要先pull一下, 如果pull那就又回到最新版本了,相當於沒回退。
思路:我們可以新建一個分支temp,然后把回退后的代碼提交到temp分支上暫存,然后刪除master主分支,新建一個master分支,提交現有代碼到master上。
/*1.新建分支*/
git checkout -b temp //新建分支並切換到temp分支
git push origin temp:temp //將代碼push到temp分支
/*2.刪除主分支*/
git push origin --delete master //刪除遠端主分支
git branch -d master //刪除本地主分支
/*3.新建主分支*/
git checkout -b master //新建主分支並切換到主分支
git push origin master //提交主分支
/*4.刪除暫存分支*/
git branch -d temp
git push origin --delete temp
注意:在github下,操作(刪除或重建分支)需要在github網頁上切換當前分支,如你要刪除master,就要將分支切換到建的temp分支上。(可以理解為自己不能刪除自己)
(項目主頁->Settings即可看到)
思路一
備注說明
-- 本地分支回滾到指定版本
git reset --hard <commit ID號>
-- 強制推送到遠程分支
git push -f origin <branch name>
思路二
實際開發過程中,有時候我們會發現歷史版本是對的,當前版本和遠程分支是錯的情況。我們這時候需要回滾到歷史版本,並且讓遠程分支也回退到歷史版本,下面來說一種解決辦法。
1,先把本地的分支回退到歷史版本:
1.1 使用 命令查看歷史版本
git log --pretty=oneline
1.2 使用下面命令回滾,我們這里回滾到上一個提交版本
git reset --hard HEAD^
注意:上一個版本就是HEAD,上上一個版本就是HEAD,當然往上100個版本寫100個比較容易數不過來,所以寫成HEAD~100
2,把當前分支push到遠程倉庫並且讓遠程倉庫和當前分支保持一致:
2.1 使用命令,這里假定我們當前的分支名為master
GIt 提供了一個命令 git reflog 來記錄本機電腦的每一次命令。
$ git reflog
通過 id ,來回退曾經的版本。
$ git reset --hard HEAD^
借鑒
https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192