git log 查找、過濾
1.git在日志中查找這個文件.
git log --pretty=oneline --branches -- 文件名
或
git log --pretty=oneline --branches -- 文件夾名
注意:--后和文件(夾)名前,必須要有空格
篩選參數 [注]
1)按數量
-n:顯示前n條提交信息。
2)按日期
--after=
比如: git log --after="2014-7-1”,顯示2014年7月1號之后的commit(包含7月1號)。
后邊的日期還可以用相對時間表示,
比如: "1 week ago"和”yesterday",
又比如: git log --after="yesterday"。
--before=:同上。
另外這兩條命令可以同時使用表示時間段,比如git log --after="2014-7-1" --before="2014-7-4"文章來源地址:https://www.yii666.com/article/207474.html?action=onAll
同理:--since、--until和--after、--before是一個意思。
--since, --after:僅顯示指定時間之后的提交。文章來源地址https://www.yii666.com/article/207474.html?action=onAll
--until, --before:僅顯示指定時間之前的提交。
日期范圍:
git log --since="2023-01-01" --until="2023-02-01"
3)按作者和提交者
--author=:僅顯示作者匹配指定字符串的提交。
比如: git log --author=“John",顯示John貢獻的commit。
注意:作者名不需要精確匹配,只需要包含就行了。
而且可以使用正則表達式,比如: git log --author="John|Mary”,搜索Marry和John貢獻的commit。
而且這個 --author 不僅包含作者名,還包含作者的email,所以你可以用這個搜索email。
--committer:僅顯示提交者匹配指定字符串的提交。
4)按commit描述
--grep=:僅顯示提交說明中包含指定字符串的提交。
比如:git log --grep="JRA-224"
而且可以傳入-i用來忽略大小寫。
注意:如果想同時使用--grep和--author,必須在附加一個--all-match參數。
5)按文件
--(空格)文件或--[后邊沒有文件]
有時你可能只對某個文件的修改感興趣,或你只想查看跟某個文件相關的歷史信息,
你只需要插入你感興趣文件的路徑,[對,是路徑,所以經常是不太好用]就可以了。
比如:git log -- foo.py bar.py ,只返回和foo.py文件或bar.py文件的相關commit。
這里的--是告訴Git,后面的參數是文件路徑而不是branch(分支)的名字。
如果后面的文件路徑不會和某個branch產生混淆,你可以省略--,
比如: git log foo.py。
另外,后邊的路徑還支持正則,
比如:git log *install.md ,是指定項目路徑下的所有以 install.md 結尾文件的提交歷史。
另外,文件名應該放到參數的最后位置,通常在前面加上--并用空格隔開表示是文件。
另外,git log file/,可以查看file文件夾下所有文件的提交記錄。
6)按分支
--:
--branchName
branchName參數:為任意一個分支名字,查看某個分支上的提交記錄。
需要放到參數中的最后位置處。
如果分支名與文件名相同,系統會提示錯誤,可通過--選項,來指定給定的參數,是分支名還是文件名。
比如:在當前分支中有一個名為v1的文件,同時還存在一個名為v1的分支。如下:
git log v1 --,此時的v1代表的是分支名字(--后邊是空的)。
git log -- v1,此時的v1代表的是名為v1的文件。
git log v1 -- v1:代表v1分支下的v1文件。
7)按內容https://www.yii666.com/
-S"
"、-G" ":僅顯示添加或刪除內容匹配指定字符串的提交。
有時你想搜索,新增或刪除某行代碼相關的commit. 可以使用這條命令。
假設你想知道Hello,World!這句話,是什么時候加入到項目里去的,
可以用:git log -S"Hello,World!"
另外,如果你想使用正則表達式去匹配,而不是字符串,那么你可以使用-G代替-S。
這是一個非常有用的debug工具,使用他可以定位所有跟某行代碼相關的commit,甚至可以查看某行是什么時候被copy的,什么時候移到另外一個文件中去的。
注意:-S后沒有"=",與查詢內容之間也沒有空格符。
8)按范圍
git log <since>..<until>
這個命令可以查看某個范圍的commit。
這個命令非常有用當你使用branch做為range參數的時候. 能很方便的顯示2個branch(分支)之間的不同。
比如:git log master..feature ,master..feature 這個 range(范圍),包含了在feature分支存在,而在master分支沒有的所有commit。
同樣,如果是 feature..master ,意思是包含所有master分支有,但是feature分支沒有的commit。
另外,如果是三個點,表示或的意思:git log master...test,意思是查詢master或test分支中的提交記錄。
9)過濾掉merge commit
--no-merges:
默認情況下git log會輸出merge commit(合并提交)。
你可以通過--no-merges標記來過濾掉merge commit,例如:git log --no-merges
另外,如果你只對merge commit感興趣可以使用 --merges 參數,例如:git log --merges
10)按標簽tag
git log v1.0:
直接這樣是查詢標簽之前的commit。
加兩個點,例如:git log v1.0.. ,是查詢從v1.0以后的提交歷史記錄(不包含v1.0)。
11)按commit
查詢commit之前的記錄,包含commit。
git log commit
查詢commit1與commit2之間的記錄,包括commit1和commit2
git log commit1 commit2
同上,但是不包括commit1
git log commit1..commit2
說明:
其中,commit可以是提交哈希值的簡寫模式,也可以使用 HEAD 代替。
HEAD 代表最后一次提交,
HEAD^ 為最后一個提交的父提交,等同于HEAD~1。
HEAD~2 代表倒數第二次提交。
參考:
https://www.yii666.com/blog/330372.html?action=onAll
https://blog.csdn.net/huanglu0314/article/details/131157396
浙公網安備 33010602011771號