git 版本歷史

2022-03-27 12:32:19 字數 2642 閱讀 2350

版本:git rev-parse

--git-dir顯示git版本庫的位置   --show-cdup顯示當前工作區目錄的深度  --parseopt解析命令列引數

$ git rev-parse --symbolic --branches 顯示分支

$ git rev-parse --symbolic --tags 顯示里程碑

$ git rev-parse --symbolic --glob=refs/* 顯示定義的所有引用。其中refs/remotes/目錄下的引用稱為遠端分支(或遠端引用)

$ git rev-parse head 顯示head對應的sha1雜湊值

$ git rev-parse a^ a: 顯示里程碑a對應的目錄樹

$ git rev-parse a^:src/makefile a:src/makefile 顯示樹裡面的檔案

$ git rev-parse :/"commit a" 通過在提交日誌中查詢字串的方式顯示提交

版本範圍:git rev-list

乙個提交id實際上就可以代表乙個版本列表,含義是該版本的所有歷史提交 $git rev-list --oneline a

兩個或多個版本,相當於每個版本單獨使用時指代的列表的並集

在乙個版本前面加上符號^含義是取反,即排除這個版本及其歷史版本 ^g d等價於g..d

...表示法含義是兩個版本共同能訪問到的除外

b^@表示某提交的歷史提交,自身除外

b^!表示提交本身不包括其歷史提交

瀏覽日誌:git log

後面可以接表示版本範圍的引數(如上git rev-list)

--graph引數可以顯示字元介面的提交關係圖,而且不同的分支可以用不同的顏色表示

-顯示最近的n條日誌

-p可以在顯示日誌的時候同時顯示改動

當不需要知道具體的改動而只想知道改動在哪些檔案上時可以使用--stat引數

--pretty=raw顯示commit的原始資料,可以顯示提交對應的樹id

--pretty=fuller同時顯示作者和提交者,兩者可以不同

--pretty=oneline提供最精簡的日誌輸出,也可以使用--oneline引數

如果只想檢視和分析某乙個提交,也可以使用git cat-file(-p引數的含義是美觀的輸出)或git show命令

差異比較:git diff

$ git diff b a 比較里程碑b和里程碑a

$ git diff a 比較工作區和里程碑a

$ git diff --cached a 比較暫存區和里程碑a

$ git diff 比較工作區和暫存區

$ git diff --cached 比較暫存區和head

$ git diff head 比較工作區和head

$ git diff -- 顯示不同版本間該路徑下的檔案差異

$ git diff 可以在git版本庫之外執行,對非git目錄進行比較

$ git diff --word-diff 逐詞比較

檔案追溯:git blame

在軟體開發過程中當發現bug並定位到具體**時,可以指出何時和什麼版本引入的此bug。

當針對檔案執行git blame命令時,就會逐行顯示檔案,在每一行的行首顯示此行最早是在什麼版本引入的,由誰引入的

如果只想顯示某幾行,使用-l n,m引數

二分查詢:git bisect

$ git bisect start 開始二分查詢

$ git bisect bad a 將a版本標記為壞提交

$git bisect good 將當前版本標記為好提交

$ git checkout bisect/bad 切換到最終定位的壞提交版本

$ git bisect reset 當對bug定位和修復後,撤銷二分查詢在版本庫中遺留的臨時檔案和引用。撤銷二分查詢後,版本庫切換回執行二分查詢之前所在的分支

如果把好提交當成了壞提交:

$ git bisect log > logfile 把二分查詢的日誌儲存在乙個檔案中,編輯這個檔案,刪除記錄了錯誤動作的行。

$ git bisect reset 結束正在進行的出錯的二分查詢

$ git bisect replay logfile 通過日誌檔案恢復進度,重啟二分查詢

自動化測試:

支援run子命令,可以執行乙個自動化測試指令碼,實現自動的二分查詢。若指令碼退出碼為0,正在測試的版本是乙個好版本;退出碼為125,正在測試的版本被跳過;退出碼為1~127(125除外),正在測試的版本是乙個壞版本

測試指令碼good-or-bad.sh,步驟如下:

(1)$ git bisect start master g 從已知的壞版本master和好版本g開始新一輪的二分查詢

(2)$ git bisect run sh good-or-bad.sh 自動化測試

(3)$ git describe refs/bisect/bad 顯示定義到的壞版本

獲取檔案歷史版本命令:

$ git ls-tree 檢視歷史提交的目錄樹

$ git checkout 整個工作區切換到歷史版本

$ git checkout -- 檢出某檔案的歷史版本

$ git show :> new_name 檢出某檔案的歷史版本到其他檔名

git 版本歷史

版本 git rev parse git dir顯示git版本庫的位置 show cdup顯示當前工作區目錄的深度 parseopt解析命令列引數 git rev parse symbolic branches 顯示分支 git rev parse symbolic tags 顯示里程碑 git r...

git 回退到歷史版本

專案中經常出現 覆蓋的問題,當我們不小心把之前別人 覆蓋了,就需要我們進行git會滾到歷史版本,然後才能正常使用。避免 丟失 這裡面講的是webstorm回退 例子 1 首先看提交歷史,檢視提交日誌 2 第二種 3 確定回退的版本號 4 點選reset 5 最後可以使用git命令強制提交 這時候gi...

git 檢視歷史版本及回滾版本

檢視歷史提交版本 1.git log 檢視歷史所有版本資訊 2.git log x 檢視最新的x個版本資訊 3.git log x filename檢視某個檔案filename最新的x個版本資訊 需要進入該檔案所在目錄 4.git log pretty oneline檢視歷史所有版本資訊,只包含版本...