git 版本回退

2022-06-09 03:45:10 字數 2989 閱讀 3881

工作區:就是電腦上的目錄

版本庫(repository)

工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。

git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head

前面講了我們把檔案往git版本庫里新增的時候,是分兩步執行的:

第一步是用git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;

第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

因為我們建立git版本庫時,git自動為我們建立了唯一乙個master分支,所以,現在,git commit就是往master分支上提交更改。

你可以簡單理解為,需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。

git add命令實際上就是把要提交的所有修改放到暫存區(stage),然後,執行git commit就可以一次性把暫存區的所有修改提交到分支。

現在我們的版本庫里已經有了三個版本

假設我們第三個版本上線之後發現了致命的bug,需要回到上乙個版本,那我們怎麼回到v2版本呢?

在git中,用head表示當前版本,也就是最新的提交b11923...(注意我的提交id和你的肯定不一樣),上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100

#

git reset --hard head^

或者直接加版本號(可以不全部輸入,只輸入前六位就可以)

#

git reset --hard b119263

這樣我們就回退到了上乙個版本

我們已經回i到了v2版本,假設發現線上產生的bug是因為伺服器宕機的原因,和我們的**沒有關係,我們又要恢復到v3版本,怎麼辦?

使用git log檢視一下

可以看到只有我們的前兩次版本,也就是說,我們回退到哪個版本之後,該版本之後的版本就都不顯示了,那怎麼恢復到v3版本,git給我們提供了git reflog來檢視所有的版本

這樣我們的v3版本就能恢復了

我們修改一下manage.py裡的內容,然後使用git status檢視一下

我們正準備提交到暫存區的時候,發現我們寫的**是錯誤的,也就是要將我們修改的內容刪掉

git checkout -- file

你可以發現,git會告訴你,git checkout -- file可以丟棄工作區的修改:

命令git checkout -- manage.py意思就是,把manage.py檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是manage.py自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是manage.py已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

git checkout -- file命令中的--很重要,沒有--,就變成了「切換到另乙個分支」的命令

git reset head

假設我們已經修改了檔案,並且將檔案git add 到了暫存區,當我們想commit的時候,發現了**錯誤,這時候使用git status來檢視下

git同樣告訴我們,用命令git reset head 可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

再用git status檢視一下,現在暫存區是乾淨的,工作區有修改:

然後在使用git checkout -- manage.py丟棄工作區的修改

#

git checkout -- manage.py

在git中,刪除也是乙個修改操作,我們實戰一下,先新增乙個新檔案test.txt到git並且提交:

然後把test.txt檔案在工作區中刪掉

這個時候,git知道你刪除了檔案,因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些檔案被刪除了:

現在你有兩個選擇,一是確實要從版本庫中刪除該檔案,那就用命令git rm刪掉,並且git commit:

現在,檔案就從版本庫中被刪除了。

另一種情況是刪錯了,因為版本庫里還有呢,所以可以很輕鬆地把誤刪的檔案恢復到最新版本:

#

git checkout -- test.txt

git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。

注意:從來沒有被新增到版本庫就被刪除的檔案,是無法恢復的!

Git版本回退

1 檢視檔案修改歷史 git log 返回的是commit後的操作記錄 git log pretty oneline 也可以使用這個命令格式化日誌輸出 2 版本回退 git reset hard head 回退到上乙個版本 git reset hard head 100 會退到第100個版本,例如現...

git版本回退

先說今天遇到的問題,看到乙個config.php的配置檔案一直在修改的狀態下,但是和遠端的config.php是不一致的,我不需要提交它,但是看它在 modified的狀態下,很不爽,想刪除它,git rm config.php,然後git push了下,結果不僅把本地的config.php乾掉了,...

git版本回退

把修改後的版本通過命令提交到版本庫 第一步 git add 檔名 字尾 第二步 git commit m commit id 但是有時候想回去怎麼辦呢?當然萬能的git給我們提供了方法的。我們先檢視一下最近到最遠的提交紀錄操作如下 在命令航輸入 git log 會顯示提交日誌,但是嫌輸出過多怎麼辦,...