git日志输出中数据和时间的不同颜色



我正在尝试在git log输出中显示日期和时间的不同颜色。

目前我正在使用git config --global alias.l 'log --pretty=format:"%C(#d33682)%h %C(#b58900)%cd %C(#6c71c4)%ce %C(#2aa198)%s %C(#cb4b16)" --date=format:"%d-%m-%Y %I-%M-%S"'

所以,我尝试了git config --global alias.l 'log --pretty=format:"%C(#d33682)%h %cd %C(#6c71c4)%ce %C(#2aa198)%s %C(#cb4b16)" --date=format:"%C(#b58900)%d-%m-%Y %C(#859900)%I-%M-%S"'

--date=format:内部的颜色对我不起作用。

有什么建议吗?

这里有两个选项。第一种是使用%cs,它以%Y-%m-%d格式返回提交日期,并根据--date:中传递的格式格式化时间

git log --pretty=format:"%C(#d33682)%h %Cred%cs %C(#b58900)%cd %C(#6c71c4)%ce %C(#2aa198)%s %C(#cb4b16)" --date=format:"%I-%M-%S"

另一种选择是截断输出两次,一次从右,另一次从左。这一个将添加那些指示列被截断的..

git log --pretty=format:"%C(#d33682)%h %Cred%<(12,trunc)%cd %C(#b58900)%<(10,ltrunc)%cd %C(#6c71c4)%ce %C(#2aa198)%s %C(#cb4b16)" --date=format:"%d-%m-%Y %I-%M-%S"

另一个选项是,您可以使用任何您想要的日期时间格式,为其他工具保留处理颜色;(

git log --pretty=format:"%h %cd %ce %s" --date=format:"%d-%m-%Y %I-%M-%S" | awk '{printf "33[1;31m" $1 "33[0m 33[1;32m" $2 "33[0m 33[1;33m" $3 "33[0m 33[1;34m" $4 "33[0m 33[1;35m"; $1=$2=$3=$4=""; print substr($0,5)}'

OP此处。多亏了@bk2204,还有另一个解决方案。

在终端中运行以下命令一次。

git config --global alias.l '!f() {
git log --format="%ct" | (
n=0;
while IFS= read -r line
do
date=$(date +"%d-%m-%Y" -d @$line)
time=$(date +"%H:%M" -d @$line)
git --no-pager log -1 --skip=$n --decorate
--pretty=format:"%C(#d33682)%h %C(#859900)$date %C(#b58900)$time %C(#6c71c4)%ce %C(#2aa198)%s%C(#d30102)%d%n"
n=$((n + 1))
done)
}; f'

现在,每次使用命令git l时,都会根据此问题的要求获取日志。

最新更新