我怎样才能得到“git status”总是使用短格式?

我希望git status始终使用短格式:

 $ git status --short M file1 M dir/file2 ?? file_untracked3 ?? dir/file_untracked4 

似乎没有这样的configuration选项,并且git config --global alias.status "status --short"不起作用。 我还没有设法在zsh中创build一个别名。

我怎样才能使git status默认使用短格式?

启动git1.8.4(2013年7月) ,你可以configurationgit status默认使用short。
参见提交50e4f757f4adda096239c1ad60499cf606bf2c6f :

有些人总是运行' git status -s '。
configurationvariablesstatus.short允许默认设置它。

所以:

 git config status.short true 

而且你会全部设置!


Ben Allred 在评论中补充道:

一个快速testing显示, git config status.branch true可以用来显示分支信息和短格式。


这一次被颠倒过来了:

提交908a0e6b98e5a7c4b299b3643823bdefb4fa512e :

status.short被设置时,它不可能“ git commit ”,并且“ git status --porcelain ”输出也会受到status.branch影响。

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

见提交f0915cbaf476d63f72c284057680809ed24fbe0d :

提交:使其与status.short工作

在设置“ status.short ”的情况下,现在不可能使用status.short set,因为它的行为类似于“ git commit --short ”,并且不可能区分由命令行选项parsing器设置的status_format与由configurationparsing器设置。

为了缓解这个问题, status_formatconfigurationparsing器完成其工作,就清除status_format

签名:Ramkumar Ramachandra

使用不同的别名。 而不是尝试别名'身份',做:

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

现在“git s”给你短的输出,“git status”给你长输出。

最简单的方法是使用别名,正如我在我的评论中所build议的。 我认为没有办法用内置命令的名字创build一个别名。 如果你坚持使用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; } ... 
  • 重制git

你可以创build一个别名 。

但是我会创buildbash脚本:

 #!/bin/bash git status --short 

把这个脚本保存在~/bin/gits (或者/usr/bin/gitschmod 555 )中,这样就可以input你想要的东西了。