好吧,“不可能”意味着没有简单的方法,我必须自己做。我太担心我总是让事情变得艰难,而实际上有更简单的方法。
这是一个 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"
我会等待更简单的解决方案,我会接受我自己的答案