Git學習 版本回退(之二)

2021-10-05 02:02:20 字數 2458 閱讀 1938

參考:

總結:1.要隨時掌握工作區的狀態,使用git status命令。

2.如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容。

3.head指向的版本就是當前版本,因此,git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id

4.想進行退回版本操作時,用git log可以檢視提交歷史,以便確定要回退到哪個版本。

5.進行退回版本操作後又檢視退回前的版本內容,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。

一、修改檔案,然後把修改提交到git版本庫

git學習第一天,已經成功地新增並提交了乙個readme.txt檔案,現在,當readme.txt檔案修改之後,如何檢查該檔案狀態?如何將修改過的檔案提交至git?

修改後內容:

git is a distributed version control system.

git is free software.

修改後,根據下圖執行命令:

如圖所示,修改檔案並提交至git成功!

二、再練習一次,修改readme.txt檔案如下:

像這樣,你不斷對檔案進行修改,然後不斷提交修改到版本庫里,就好比玩rpg遊戲時,每通過一關就會自動把遊戲狀態存檔,如果某一關沒過去,你還可以選擇讀取前一關的狀態。有些時候,在打boss之前,你會手動存檔,以便萬一打boss失敗了,可以從最近的地方重新開始。git也是一樣,每當你覺得檔案修改到一定程度的時候,就可以「儲存乙個快照」,這個快照在git中被稱為commit。一旦你把檔案改亂了,或者誤刪了檔案,還可以從最近的乙個commit恢復,然後繼續工作,而不是把幾個月的工作成果全部丟失。

三、如果想要把readme.txt回退到上乙個版本,也就是退回到add distributed的那個版本,怎麼做呢?

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

$ git reset --hard head^

head is now at dbcd384 add distributed

–hard引數有啥意義?這個後面再講,現在你先放心使用。

看看readme.txt的內容是不是版本add distributed:

$ cat readme.txt

git is a distributed version control system.

git is free software.

果然被還原了。(或者直接用notepad++開啟,也會發現被還原)

$ git reset --hard f7e77
版本號沒必要寫全,前幾位就可以了,git會自動去找。當然也不能只寫前一兩位,因為git可能會找到多個版本號,就無法確定是哪乙個了。

再看看readme.txt的內容:

$ cat readme.txt

git is a distributed version control system.

git is free software distributed under the gpl.

版本三又回來了!

四、現在,你回退到了某個版本,關掉了電腦,第二天早上就後悔了,想恢復到新版本怎麼辦?找不到新版本的commit id怎麼辦?

$ git reflog

f7e77c6 (head -> master) head@: reset: moving to f7e77

dbcd384 head@: reset: moving to head^

dbcd384 head@: commit: add distributed

999796e head@: commit (initial): wrote a readme file

Git版本回退(二)

前文的版本回退操作是在工作區進行的。有時候你已經把修改的 放到了暫存區,但是你想回退暫存區的 該怎麼做?我們這次增加乙個檔案,名字叫license。然後使用git status來檢視工作區的狀態。可以看到,git告訴我們license是未被跟蹤的檔案,也就是說它不在當前的git版本倉庫中。因為這是我...

Git學習 版本回退

我們可能對某乙個檔案提交過很多版本,我們想檢視所有的歷史版本,可以通過如下 進行檢視。執行後,我們能夠看到所有的檔案所有提交過的歷史版本。所有版本按照時間倒序列出,從輸出結果能夠看到。該倉庫中提交過兩個版本,其中版本1寫了乙個readme的檔案,版本2在文末新增了gpl。我們還可以通過引數將輸出結果...

git學習 版本回退

像這樣,你不斷對檔案進行修改,然後不斷提交修改到版本庫里,就好比玩rpg遊戲時,每通過一關就會自動把遊戲狀態存檔,如果某一關沒過去,你還可以選擇讀取前一關的狀態。有些時候,在打boss之前,你會手動存檔,以便萬一打boss失敗了,可以從最近的地方重新開始。git也是一樣,每當你覺得檔案修改到一定程度...