git日志格式

Nic*_*oft 19 git format logging

我需要有这样的格式:

git log --decorate --graph --oneline --date-order
Run Code Online (Sandbox Code Playgroud)

但我也需要它:

  1. 包含日期(短)
  2. 有相同的颜色

我试过了:

git log --decorate --graph --oneline --date-order \
--date=short --pretty=format:"%h %ad %s"
Run Code Online (Sandbox Code Playgroud)

但它更难阅读(没有颜色),也不包括分支/标签


最接近的简单解决方案是(感谢VonC):

git log --graph --pretty=format:'%C(yellow)%h%Creset \
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
--abbrev-commit --date=short
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 13

你可以试试:

alias.lgb=log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=short --branches
Run Code Online (Sandbox Code Playgroud)

它有不同的颜色,但你可以很容易地改变它们.

例如:

git log --graph --pretty=format:'%Cred%h -%d %s (%cr) <%an>%Creset' --abbrev-commit --date=short --branches
Run Code Online (Sandbox Code Playgroud)

  • 看起来很漂亮,除了分支没有不同的颜色,具体取决于它们是本地还是远程,而且标签与分支具有相同的颜色.区分这些是非常有用的.HEAD也是浅蓝色 - 显示你现在的位置 (2认同)

Nic*_*oft 6

好吧,"不可能"意味着没有简单的方法,我必须自己做.我太担心了,当有更简单的方法时,我总是把事情弄得很难.

这是一个bash + php脚本.我试着用sed制作它,但我失败了.

我将这个脚本命名为git-gd并将其放在路径中的bin目录中,/usr/local/bin/并将其与git一起使用:git gd或者git gd <options>

#!/bin/bash

GIT="/usr/local/bin/git"
PHP="/bin/php"
GIT_DATES="$GIT log --date=short --abbrev-commit --pretty=format:%C(yellow)%h_%C(green)[%ad]%Creset --branches --color=always $*"
#if you have have alias g
GIT_GRAPH="$GIT g --color=always"
#or
#GIT_GRAPH="$GIT log --decorate --graph --oneline --date-order --color=always"
PHP_SCRIPT='
  $exps = explode("\n", $_SERVER["argv"][1]);
  $lines = file("php://stdin");
  $s = array();
  $r=$s;
  foreach($exps as $exp){
   $exp = trim($exp);
   list($commit,)=explode("_", $exp);
   $s[] = $commit;
   $r[] = str_replace("_", " ", $exp);
  }
  foreach($lines as $line){
    $line = str_replace($s, $r, $line);
    echo $line ;
  }
  '

DATES=`$GIT_DATES`
$GIT_GRAPH $* |$PHP -r "$PHP_SCRIPT" -- "$DATES"
Run Code Online (Sandbox Code Playgroud)

我会稍微等一下以获得更简单的解决方案,我会接受我自己的答案


Hen*_*son 5

在非古代版本的git中,您可以配置git log为启用装饰:

git config --global log.decorate full
Run Code Online (Sandbox Code Playgroud)

  • `log.decorate = full`导致引用名称的前缀(`refs/heads /`等); 我发现`log.decorate = short`更有用. (2认同)