[英]Show specific commits in git log, in context of other commits?
有多種方法可以使用 git 日志“選擇”提交。 例如:
和許多其他人。
但是,所有這些僅顯示在命令行上選擇的提交。 我想要的是查看我范圍內的所有提交,但突出顯示(使用顏色、標記或其他)這些提交的特定子集,例如更改特定文件或其他內容的提交。 所以在做的時候:
git log --oneline master..@ -- path/to/frobnitz
而不是看到:
12ca6d863 foo
6166da1fd bar
894567343 baz
我會看到類似的東西:
46984ad11 (HEAD -> master) git is fun!
2e11a5382 cool beans
>> 12ca6d863 foo
60069036d whatever
d698663d0 something
>> 6166da1fd bar
3d2c811e3 more cool stuff
>> 894567343 baz
3d2c811e3 cool stuff
此外,理想的解決方案將使用--graph
模式,因為我還想查看所選提交的合並和分支上下文。
我還注意到git log
支持各種歷史簡化場景,這在某些情況下幾乎可以滿足我的需求,但很難弄清楚如何,也不是我想要的。 我已經有了想要查看的歷史記錄,並且已經有了想要突出顯示的提交。
我有一些想法,但我不喜歡其中任何一個:
編寫腳本——運行兩個 git 日志,然后使用其中一個的 output 來裝飾/操作另一個。 這樣做的缺點是它很脆弱,並且它不適用於我可能提供給目標日志的不同選項集,例如--graph
對於“選定”提交,分配臨時參考,例如selectedcommits
給它們,然后使用--decorate-refs=selectedcommits
顯示相關提交。 這看起來很亂。
只是為了好玩,同時等待更好的答案。
git log --oneline --decorate=no --graph | less -p $(git log --pretty=%h -- Makefile | tr '\n' '|')
這個想法是通過 pipe 到 output,例如,用於突出顯示特定提交的less
。
在 Linux 上的 bash 和 Windows 上的 git-bash 中測試。
這是別名的第一次嘗試:
[alias] hl-graph = !git log --oneline --graph --color | less -R -p $(git log --pretty=%h \"$@\" | tr '\n' '|') && :
要突出顯示的提交可以像往常一樣定義:
git hl-graph --since="1 month ago" -- path/to/frobnitz
但是不能修改日志格式。
跟進@sergej 的答案(贊成它,),並認識到需要別名的命令的重復部分實際上只是突出顯示:我已經配置了這些別名:
hl = "!f() { cd -- ${GIT_PREFIX:-.}; grep --color -E \"$(git log --pretty=%h \"$@\" | tr '\n' '|')\" || true; }; f"
hlp = "!f() { cd -- ${GIT_PREFIX:-.}; less -R -p $(git log --pretty=%h \"$@\" | tr '\n' '|'); }; f"
這些通過將任何日志命令的 output 管道傳輸到別名來使用。 例如:
git log --oneline --graph --color | git hl --since="1 month ago" -- path/to/frobnitz
(或者對於分頁版本,使用hlp
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.