我想设置git diff --name-status
的bash输出样式,以便状态为D
,M
和A
的文件颜色不同。
要设置常规git bash的样式,我使用color
中的.gitconfig
选项。
# .gitconfig
[color]
branch = auto
diff = auto
status = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
要为git log
之类的命令设置输出样式,我可以在下面的别名中使用--pretty=format
:
# .gitconfig
[alias]
log = log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
但是,我--pretty=format
使用git diff --name-status
未成功。
我想要样式的输出目前没有样式,看起来像:
$ git diff <branch> --name-status
M .gitignore
M README.md
A diagnostic.js
D diagnostic.md
有没有办法按状态类型设置输出git diff --name-status
的样式?
答案 0 :(得分:1)
我不确定您是否可以使用--name-status
--pretty=format:...
的输出着色
但是,如果您希望文件名的颜色汇总更改,则--stats
标记可以传递给许多命令,包括git diff <branch --stat
和git log --stat
。
它显示文件名,带有彩色+++--
后缀,例如
$ git diff master --stat
lib/thing.go | 5 +++--
lib/thing_test.go | 23 +++++++++++++++++++++++
2 files changed, 28 insertions(+), 2 deletion(-)
并且+
和-
将根据您的git配置着色
答案 1 :(得分:0)
如果你真的需要生活中的颜色,这可能有用:
# pick your colours
Red='\033[0;31m'; Colour_Off='\033[0m'; Cyan='\033[0;36m';
# find another branch (you could enter <branch>)
BRANCH=$(git br|grep -v '*');
# take the output of git diff and pain the first column red and the reset cyan.
git diff $BRANCH --name-status|awk "{print \"$Red\" \$1 \"\t\" \"$Cyan\" \$2 \"$Colour_Off\"}"
您可以在bash或paint.sh
中为此创建别名