Git學習 Git時光機之版本回退 二

2022-09-17 23:09:12 字數 4001 閱讀 6758

git,是linus花了兩周時間用c寫的乙個分布式版本控制系統。牛人該怎麼定義?

倒敘總結一下:

下面繼續我們的學習:

1.git安裝(略)。

2.建立git版本庫(略)——見git學習-git配置(一)

git is a distributed version control system.

git is free software distributed under the gpl.

git has a mutable index called stage.

git tracks changes of files.

將其放到e:\my git project\learngit目錄下,因為這是之前建立的乙個git倉庫,放到其他地方git再厲害也找不到這個檔案。

(1)使用git add將檔案新增到倉庫:

$ git add readme.txt
(2)使用git commit將檔案提交到倉庫:

注:git commit命令,-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄。

現在,你已經學會了修改檔案,然後把修改提交到git版本庫,現在,再練習一次,修改readme.txt檔案如下:

git is a distributed version control system.

git is free software distributed under the gpl.

然後嘗試提交:

$ git add readme.txt

1 file changed, 1 insertion(+), 1 deletion(-)

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

現在,我們回顧一下readme.txt檔案一共有幾個版本被提交到git倉庫裡了:

版本1:wrote a readme file

git is a version control system.

git is free software.

版本2:add distributed

git is a distributed version control system.

git is free software.

git is a distributed version control system.

git is free software distributed under the gpl.

當然了,在實際工作中,我們腦子裡怎麼可能記得乙個幾千行的檔案每次都改了什麼內容,不然要版本控制系統幹什麼。版本控制系統肯定有某個命令可以告訴我們歷史記錄,在git中,我們用git log命令檢視:

git log

p.s. 如何實現紅色**?

`git log`

$ git log

commit ef7f4d08f501d446b3450d82ae61b175253db9e4 (head -> master)

author: neo date: wed jan 10 20:40:23 2018 +0800

commit f393b7c23f64365b12f93b39bf3a3ee415e792f3

author: neo date: wed jan 10 20:08:21 2018 +0800

add distributed

commit 287ec15c090ebe1bc52d7241e21f6d913918bc5c

author: neo date: wed jan 10 19:56:05 2018 +0800

this is my first readme file

git log引數:

f393b7c23f64365b12f93b39bf3a3ee415e792f3 add distributed

287ec15c090ebe1bc52d7241e21f6d913918bc5c this is my first readme file

git的commit id不是1,2,3……遞增的數字,而是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示

每提交乙個新版本,實際上git就會把它們自動串成一條時間線。

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

$ git reset --hard head^

head is now at f393b7c add distributed

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

cat filename命令顯示版本庫物件的內容、型別及大小資訊。

$ cat readme.txt

git is a distributed version control system.

git is free software.

git的版本回退速度非常快,因為git在內部有個指向當前版本的head指標,當你回退版本的時候,git僅僅是把head

改為指向add distributed

然後順便把工作區的檔案更新了。所以你讓head指向哪個版本號,你就把當前版本定位在哪。

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

用來記錄你的每一次命令:

$ git reflog

f393b7c (head -> master) head@: reset: moving to head^

f393b7c (head -> master) head@: commit: add distributed

287ec15 head@: commit (initial): this is my first readme file

找到那個版本號,於是就可以指定的某個版本:

$ git reset --hard ef7f4d0

Git 時光機穿梭之版本回退

現在,你已經學會了修改檔案,然後把修改提交到git版本庫,現在,再練習一次,修改readme.txt檔案如下 git is a distributed version control system.git is free software distributed under the gpl.然後嘗試...

Git學習 版本回退

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

git學習 版本回退

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