我想对git status --short --branch
的输出进行排序,以便:
如果这需要管道连接到其他命令来对输出中的行进行排序,那么保留由Git配置的输出着色会很好。
我能创建一些聪明的别名吗?注意我在Windows上使用Git(如果重要的话)。
答案 0 :(得分:1)
您可以告诉git生成颜色代码,但要按自定义顺序排序,您必须编写一些脚本。这是一个简短的python示例,您可以从git -c color.ui=always status --short --branch
:
#!/bin/env python
import sys, re
# custom sorting order defined here:
order = { 'A ' : 1, ' M' : 3, '??' : 2, '##' : 0 }
ansi_re = re.compile(r'\x1b[^m]*m')
print ''.join(sorted(
sys.stdin.readlines(),
cmp=lambda x,y: cmp(
order.get(ansi_re.sub('', x)[0:2],0),
order.get(ansi_re.sub('', y)[0:2],0))))
<子> 或者是一个单行的憎恶:
git -c color.ui=always status --short --branch | python -c 'import sys, re; \
order = {"A ":1," M":3,"??":2,"##":0}; ansi_re = re.compile(r"\x1b[^m]*m");\
print "".join(sorted(sys.stdin.readlines(),cmp=lambda x,y: \
cmp(order.get(ansi_re.sub("", x)[0:2],0), order.get(ansi_re.sub("", y)[0:2],0))))'
简短说明。
python脚本读取 stdin ,这是git status的彩色列表输出,在剥离ANSI颜色代码后,比较每个状态的自定义优先级的前两个状态字符在字典中定义。
ANSI颜色代码删除基于:How can I remove the ANSI escape sequences from a string in python
可以在git status帮助页面找到不同状态代码的完整列表。
答案 1 :(得分:0)
tail -r
可用于反转git status
的输出,但不会保留颜色,显然on Linux there is no -r
option, so you have to use tac
instead:
git status --short --branch | tail -r
我还有其他相关的反向技巧,因此可能值得查看其他选项(以获取颜色输出)。