如何对速记 git status 的输出进行排序?

2023-12-11

我想对输出进行排序git status --short --branch, 以便:

  • 索引中的文件显示在底部
  • 在工作树中修改但不在索引中修改的文件出现在其上方
  • 顶部未跟踪的更改

如果这需要管道到其他命令来对输出中的行进行排序,那么保留 Git 配置的输出颜色会很好。

我可以创建一些聪明的别名来为我做到这一点吗?请注意,我在 Windows 上使用 Git(如果重要的话)。


您可以告诉 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))))

Or a one-liner abomination:

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))))'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对速记 git status 的输出进行排序? 的相关文章

随机推荐