簡體   English   中英

在其他提交的上下文中顯示 git 日志中的特定提交?

[英]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

嘗試以下 git 命令:

git log --name-only --pretty=format:"%h %s" --graph

此命令將顯示所有更改的文件( --name-only )、git 提交哈希( %h )、命令中的主題(來自git commit command -> %s )以及不同顏色繪制的分支 -線。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM