我需要具有以下格式:
git log --decorate --graph --oneline --date-order
但我也需要它:
我试过了:
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
答案 0 :(得分:12)
您可以尝试:
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
答案 1 :(得分:6)
嗯,“不可能”意味着没有简单的方法,我必须自己做。我太担心了,当事情变得更加简单时,我总是把事情弄得很难。
这是一个bash + php脚本。我试着用sed制作它,但我失败了。
我将此脚本命名为git-gd并将其放在路径/usr/local/bin/
中的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"
我会稍等一下以获得更简单的解决方案,我会接受我自己的答案
答案 2 :(得分:5)
在非古代版本的git中,您可以配置git log
以启用装饰:
git config --global log.decorate full
答案 3 :(得分:2)
此外,在你的git配置中你可以添加两行:
[format]
pretty = %Cblue%h%Creset %Cgreen[%ar]%Creset (%an) %s
这只是意味着你可以输入git log并且它将始终被格式化。