如何让'git status'始终使用短格式?

Ada*_*erg 40 git zsh status

我想git status总是使用短格式:

$ git status --short
 M file1
 M dir/file2
?? file_untracked3
?? dir/file_untracked4
Run Code Online (Sandbox Code Playgroud)

似乎没有为此配置选项,并且git config --global alias.status "status --short"不起作用.我还没有设法在zsh中创建别名.

如何git status默认使用短格式?

Von*_*onC 37

启动git1.8.4(2013年7月),您可以配置git status为默认使用short.
请参阅commit 50e4f757f4adda096239c1ad60499cf606bf2c6f:

有些人总是跑' git status -s'.
配置变量status.short允许默认设置它.

所以:

git config status.short true
Run Code Online (Sandbox Code Playgroud)

你会全力以赴!


Ben Allred 在评论中补充道:

快速测试表明,该功能git config status.branch true也可以与短格式一起显示分支信息.


它被颠倒了一段时间:

提交908a0e6b98e5a7c4b299b3643823bdefb4fa512e:

这使得" git commit" status.short设置时不可能," git status --porcelain"输出也受到影响status.branch.

但它现在又回来了,仍然是git 1.8.4(2013年7月/ 8月)

请参阅commit f0915cbaf476d63f72c284057680809ed24fbe0d:

commit:让它工作 status.short

使用" status.short"设置,现在无法使用status.short设置,因为它的作用类似于" git commit --short",并且无法区分命令行选项解析器设置的status_format与配置解析器设置的status_format.

要缓解此问题,请status_format在配置解析器完成其工作后立即清除.

签约:Ramkumar Ramachandra


Wil*_*ell 34

使用其他别名.不要尝试别名'status',而是:

git config --global alias.s 'status --short'

现在"git s"为您提供短输出,"git status"为您提供长输出.


Luc*_*cas 7

最简单的方法是使用另一个别名,正如我在评论中所建议的那样.我认为无法使用内置命令的名称创建别名.如果你坚持使用git status,另一个选择是(git毕竟是开源的):

  • 获取git源代码(例如http://github.com/git/git/)
  • 打开文件 builtin/commit.c
  • 寻找功能 int cmd_status(int argc, const char **argv, const char *prefix)
  • 在底部你会发现一个 switch-statement
  • 注释掉两行,如下面的代码所示
  • 添加该行,如下面的代码所示

码:

...
switch (status_format) {
    case STATUS_FORMAT_SHORT:
        wt_shortstatus_print(&s, null_termination);
        break;
    case STATUS_FORMAT_PORCELAIN:
        wt_porcelain_print(&s, null_termination);
        break;
    case STATUS_FORMAT_LONG:
        //s.verbose = verbose;      <--lines have to be commented out
        //wt_status_print(&s);
        wt_shortstatus_print(&s, null_termination);    //<-- line has to be added
        break;
    } 
 ...
Run Code Online (Sandbox Code Playgroud)
  • 重拍git