文章目錄
注:轉載請標明原文出處鏈接:https://xiongyiming.blog.csdn.net/article/details/106105282
1 查看當前工作狀態
查看當前工作狀態命令爲: git status
(1) 當文件被修改,沒有提交到暫存區時,使用命令:git status
,結果如下圖所示,提示一個文件未被追蹤,表示當前修改的文件未被提交到暫存區。
(2) 當文件提交到暫存區後,使用命令:git status
,結果如下圖所示:
(3) 文件從暫存區提交到Git倉庫後,使用命令:git status
,結果如下圖所示:
2 查看歷史結交記錄
查看Git歷史結交記錄命令爲: git log
,結果如下圖所示:
通過命令:git log --pretty=oneline
可以查看簡約版歷史提交記錄,結果如下圖所示:
也可以通過命令:git log --oneline
可以查看簡約版歷史提交記錄,結果如下圖所示:
也可以通過命令: git reflog
查看歷史記錄,如下圖所示,可以看到有 HEAD@{0}
和 HEAD@{1}
信息,其作用時方便後退到某一個版本,數字表示後退到當前版本需要多少步。
3 版本的前進和後退
首先查看版本提交記錄,結果如下圖所示:
爲了方便進行版本的前進和後退操作,對 README.md
文件多進行幾次修改、提交操作。
第一次修改後提交到倉庫,結果如下圖所示:
接下來與上面的步驟相同,第二次修改後提交到倉庫,結果如下圖所示:
第三次修改後提交到倉庫,結果如下圖所示:
第四次修改後提交到倉庫,結果如下圖所示:
通過命令 git reflog
查看歷史提交記錄,結果如下:
版本的前進和後退需要通過 指針 HEAD 來進行控制。
HEAD控制的方式有三種:
(1) 使用版本號進行操作(常用):
命令格式爲:git reset --hard 版本號
(2) 使用^符號進行操作,只能後退:
命令: git reset --hard HEAD^
表示後退一個版本
命令: git reset --hard HEAD^^
表示後退兩個版本
(3) 使用~符號進行操作,只能後退:
命令: git reset --hard HEAD~
表示後退一個版本;
命令: git reset --hard HEAD~~
表示後退兩個版本;
命令: git reset --hard HEAD~5
表示後退5個版本;
命令: git reset --hard HEAD~n
表示後退n個版本;
注:命令參數有 soft, mixed, hard ** 三種類型:**
(1) 參數 soft 表示本地Git倉庫移動HEAD指針。
(2) 參數 mixed 表示本地Git倉庫移動HEAD指針,重置暫存區。
(3) 參數 hard 表示表示本地Git倉庫移動HEAD指針,重置暫存區,重置工作區。
下面舉例說明版本後退和前進。
使用版本號進行操作,其命令格式爲:git reset --hard 版本號
後退到版本號爲:1217f11的版本,命令爲:git reset --hard 1217f11
,結果如下圖所示:
當然也可以前進到剛纔的版本:命令爲:git reset --hard 4786d84
,結果如下圖所示:
4 刪除文件後找回文件
4 .1 Git倉庫(本地庫)刪除文件後找回文件
假設新建一個 d123.txt
文件後提交到Git倉庫,然後倉庫需要刪除該文件,其步驟爲:
刪除工作區 d123.txt
文件 ——> 提交到暫存區 ——> 提交到倉庫
(1) 新建 d123.txt
文件後提交到Git倉庫,如下圖所示:
(2) 刪除Git倉庫的 d123.txt
文件
那麼問題來了,工作區、暫存區和倉庫中的 d123.txt 文件均被刪除,該如何找回刪除的文件?
此時就需要版本的後退,即可找回文件。
首先查看版本提交記錄,然後退回到指定版本即可。如下圖所示:
4.2 暫存區刪除文件後找回文件
假設新建一個 d456.txt
文件後提交到Git倉庫,然後刪除文件提交到暫存區後,突然想找回該文件,此時倉庫的文件並沒有本刪除,只需要將指針HEAD後退到提交 d456.txt
文件對應的版本即可,本質就是將調整指針HEAD的方向。
(1) 新建 d456.txt
文件後提交到Git倉庫
(2) 刪除暫存區的 d123.txt
文件
(3) 找回文件
步驟:通過提交記錄,查詢提交 d456.txt
文件至倉庫的版本號,後退到該版本即可。結果如下圖所示:
5 版本中的文件內容比較
對於版本之間同樣文件內容比較可以使用命令 git diff
進行操作
比較文件的差異有多種情況:
- 第一種:工作區和暫存區文件比較,命令格式爲:
git diff 文件名
- 第二種:工作區和Git倉庫文件比較,命令格式爲:
git diff HEAD 文件名
- 第三種:工作區和Git倉庫 的 不同版本文件比較,命令格式爲:
git diff 版本號 文件名
注:不添加文件名進行比較時,將自動比較多個相同文件名文件。
舉例說明:
假設當前Git倉庫有 d123.txt
和 d456.txt
文件,現在對工作區文件進行修改。
(1) 工作區文件修改,不提交到暫存區
使用命令:git diff d123.txt
進行工作區和暫存區文件比較
使用命令:git diff d456.txt
進行工作區和暫存區文件比較
當不添加文件名時(git diff
),自動比較多個文件,如下圖所示:
(2) 工作區文件修改,提交到暫存區,並未提交到倉庫
使用命令:git diff d123.txt
和 git diff d456.txt
將工作區文件和暫存區文件對比,如下圖所示,工作區和暫存區沒有區別,因爲工作區文件被提交到暫存區了。
使用命令:git diff HEAD d123.txt
和 git diff HEAD d456.txt
將工作區文件(工作區文件和暫存區相同,因爲工作區文件被提交到暫存區了) 和倉庫文件對比,如下圖所示,發現有區別了。
(3) 工作區文件修改,提交到Git倉庫
使用命令 git diff HEAD d123.txt
和 git diff HEAD d456.txt
分別將工作區文件和倉庫文件比較,結果如下圖所示,發現沒有區別。
可以通過命令: git diff 版本號 文件名
查詢工作區和其他版本之間的文件比較,結果如下圖所示:
參考資料
[1] https://www.bilibili.com/video/BV1bs411N7ny?p=5
[2] https://www.bilibili.com/video/BV1pW411A7a5?p=23