Git恢復到原來的版本

2021-09-14 04:10:43 字數 2121 閱讀 9778

參考**:

2018/12/9 修改更新

在利用github實現多人合作程式開發的過程中,我們有時會出現錯誤提交的情況,此時我們希望能撤銷提交操作,讓程式回到提交前的樣子,本文總結了兩種解決方法:回退(reset)、反做(revert)。

git的版本管理,及head的理解

使用git的每次提交,git都會自動把它們串成一條時間線,這條時間線就是乙個分支。如果沒有新建分支,那麼只有一條時間線,即只有乙個分支,在git裡,這個分支叫主分支,即master分支。有乙個head指標指向當前分支(只有乙個分支的情況下會指向master,而master是指向最新提交)。每個版本都會有自己的版本資訊,如特有的版本號、版本名等。如下圖,假設只有乙個分支:

3.1恢復到之前某個提交的版本,且那個版本之後提交的版本我們都不要了

git reset
原理:git reset的作用是修改head的位置,即將head指向的位置改變為之前存在的某個版本,如下圖所示,假設我們要回退到版本一:

【具體操作】2.使用git log檢視版本資訊,此時本地的head已經指向之前的版本:

3.使用git push -f提交更改:

此時如果用「git push」會報錯,因為我們本地庫head指向的版本比遠端庫的要舊:所以我們要用 git push -f強制推上去,就可以了:

在github圖形化介面上看,遠端庫的head也已經指向目標版本:回退成功!

git log

git reset --hard [目標版本號]

git push -f

3.2、恢復之前的某一版本(該版本不是merge型別),但是又想保留該目標版本後面的版本,記錄下這整個版本變動流程

git revert
原理:git revert的作用通過反做建立乙個新的版本,這個版本的內容與我們要回退到的目標版本一樣,但是head指標是指向這個新生成的版本,而不是目標版本。如下圖所示,假設我們要回退到版本一,版本四的內容和版本一是一樣的:

【具體操作】

1.檢視版本號:

可以通過命令列檢視:

2.使用git revert -n [版本號]反做,並使用git commit -m ["版本名"]提交:

(1)反做 。注意: 這裡可能會出現衝突,那麼需要手動修改衝突的檔案。而且要git add 檔名。

git revert -n [版本號]
(2)提交。此時可以用「git log」檢視本地的版本資訊,可見多生成了乙個新的版本:

git commit -m ["版本名"]
3.使用git push推上遠端庫:

檢視github上顯示的遠端庫版本資訊:反做成功!

【命令彙總】

git revert -n [版本號] 

git commit -m ["版本名"]

git push

參考:

如果您有任何未被git跟蹤的檔案(例如上傳的使用者內容),這些檔案將不會受到影響。

下面是正確的方法:

git fetch --all
然後,你有兩個選擇:

git reset --hard origin/master
或者如果你在其他分支上:

git reset --hard origin/

git恢復到master版本 Git恢復至之前版本

讓程式回到提交前的樣子 兩種解決方法 回退 reset 反做 revert 方法一 git reset 原理 git reset的作用是修改head的位置,即將head指向的位置改變為之前存在的某個版本 適用場景 如果想恢復到之前某個提交的版本,且那個版本之後提交的版本我們都不要了,就可以用這種方法...

git使用tag恢復到以前的版本

前提是在每次上線後,拉取了相應的tag。這樣才可以在需要時,回退到相應的tag。1 首先,檢視tag列表。命令 git tag 可以用下面的命令檢視標籤詳情 git show v1.02 git show命令可以看到打tag時提交的id,我們通過這個commit id回退 git reset har...

GIT 恢復單個檔案到歷史版本

之前一直沒有用到這個功能,最近手誤改錯了乙個檔案,其實完全可以手動改回來,但是由於使用git,那麼就要利用她所帶的 高大上 的功能啊。g oogle了一下命令,都是一樣的方法,引用如下 但是自己實際測試了一下,發現檔案根本沒有改動,只是有unstaged commit的提示 說明一下,我是在wind...