在git使用——檔案修改與狀態檢視一文中介紹了修改檔案的方法。
目錄
一.再次修改檔案
二.git時光機
再次修改readme.txt檔案,然後提交
# 修改檔案內容如下
git is free.
git is a distributed version control system.
git is free software distributed under the gpl.
# 提交檔案
$ git add readme.txt
# 提交結果
1 file changed, 2 insertions(+), 1 deletion(-)
不斷對檔案進行修改,然後不斷提交到版本庫里。每commit一次就會有乙份存檔,如果你不小心刪除或改動了檔案中的重要內容,你可以選擇從最近乙個存檔恢復。
人的精力是有限的,不可能把每次修改的內容都記住,而在git中使用命令可以幫助我們查詢歷史記錄。
# 顯示從最近到最遠的提交日誌
$ git log
# 結果
author: username date: time
commit 36a95ace80a876fdfbd8c1e6690561ec4605a6d3
author: username date: time
add distributed
commit e3c89a6b8f3aca4597ce0acfafeb6c12bc9b016a
author: username date: time
first readme
# 精簡輸出
$ git log --pretty=oneline
# 結果
36a95ace80a876fdfbd8c1e6690561ec4605a6d3 add distributed
e3c89a6b8f3aca4597ce0acfafeb6c12bc9b016a first readme
# 結果分析
結果中一長串字元是commit id(版本號),是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示。
為什麼commit id需要用這麼一大串數字表示呢?因為git是分布式的版本控制系統,為了避免多人在同乙個版本庫里工作產生的衝突。
每提交乙個新版本,git就會把它們自動串成一條時間線。如果使用視覺化工具檢視git歷史,就可以更清楚地看到提交歷史的時間線
現在想把檔案回退到add distributed版本,應該如何操作?
首先明確當前是哪個版本,在git中用head表示當前版本,上乙個版本就是head^,上上個版本就是head^^。如果版本太多怎麼辦?比如回退到前50個版本應該寫成head~50。
$ git reset --hard head^
# 結果
head is now at 36a95ac add distributed
檢視readme.txt
# 檢視readme.txt檔案內容
$ cat readme.txt
# readme.txt檔案內容
git is free.
git is a distributed version control system.
這時再次檢視版本庫狀態
# 檢視日誌
$ git log
# 結果
author: username date: time
add distributed
commit e3c89a6b8f3aca4597ce0acfafeb6c12bc9b016a
author: username date: time
first readme
# 版本恢復
# 版本號沒必要寫全,前幾位即可。git會自動尋找。也不能只寫前一兩位,git可能會找到多個版本號,無法確定是哪乙個。
$ git reset --hard 2ee2
# 恢復結果
# 再次檢視檔案內容
$ cat readme.txt
# 檔案內容
git is free.
git is a distributed version control system.
git is free software distributed under the gpl.
現在假設這樣乙個場景:你完成了工作並關閉了電腦。但是第二天你又想恢復到最新的版本,你已經忘記了commit id,現在怎麼辦?
git考慮到了這種情況
# 檢視命令歷史
$ git reflog
# 結果
2ee22b0 (head -> master) head@: reset: moving to 2ee2
36a95ac head@: reset: moving to head^
36a95ac head@: commit: add distributed
e3c89a6 head@: commit (initial): first readme
好了,現在你知道了版本號,問題被完美解決了。 穿越時光網的愛戀
東漢末年分三國,在這懸而未分之時的東漢,有乙個著名的政治家,姓孫名敬,字文寶。我們的文寶兄自幼酷愛學習,每天從早到晚的讀書,廢寢忘食。奈何人不是鐵打的,文寶兄再沉迷學習也抵擋不住身體的疲倦,在他撓頭思索如何將十二個時辰的點點滴滴都用於讀書時,手中的一頭秀髮給了他乙個激靈。文寶找來一根繩子,將自己的頭...
Git使用(時常新增)
tab鍵是提示鍵 建立本地倉庫 會在本地建立乙個.git的隱藏資料夾,裡面是git所需要的檔案 git init cd 進資料夾 cd e 進盤 檢視倉庫檔案是否變更 git status 顯示當前分支的版本歷史 git log 提交檔案到暫存區 git add 檔名1 檔名2 提交指定檔案,也可以...
Git 時光穿梭
1.git status 命令可以讓我們掌握倉庫當前狀態 2.git diff 檔名 顧名思義 檢視difference,可以得到檔案更改的詳細資訊 3.head指向的版本是當前版本,git 允許我們在版本之間穿梭,使用命令 git reset hard commit id 穿梭前可以檢視提交歷史,...