форматирование git log - PullRequest
       8

форматирование git log

19 голосов
/ 15 сентября 2011

Мне нужно иметь формат вроде:

git log --decorate --graph --oneline --date-order

, но мне также нужно:

  1. , чтобы содержать дату (короткую)
  2. , чтобы иметь такой жецвета

Я пробовал:

git log --decorate --graph --oneline --date-order \
--date=short --pretty=format:"%h %ad %s"

, но его сложнее читать (без цветов) и не содержит ветвей / тегов


Ближайший простойРешение (спасибо 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

Ответы [ 4 ]

13 голосов
/ 15 сентября 2011

Вы можете попробовать:

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

Он имеет другой цвет, но вы можете легко их изменить.

например:

git log --graph --pretty=format:'%Cred%h -%d %s (%cr) <%an>%Creset' --abbrev-commit --date=short --branches
6 голосов
/ 15 сентября 2011

Ну, «невозможно» означает, что нет простого пути, и мне придется сделать это самому.Я слишком беспокоился о том, что всегда усложняю, когда есть более легкий путь.

Вот скрипт 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"

Я немного подожду более простого решения и приму свой ответ

5 голосов
/ 23 марта 2012

В не древних версиях git вы можете настроить git log для включения украшений следующим образом:

git config --global log.decorate full
2 голосов
/ 16 июля 2013

Кроме того, в вашем git config вы можете добавить две строки, подобные этой:

[format]
  pretty = %Cblue%h%Creset %Cgreen[%ar]%Creset (%an) %s 

Это просто означает, что вы можете ввести git log, и он всегда будет отформатирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...