问题
I'd like git status to always use the short format:
$ git status --short
M file1
M dir/file2
?? file_untracked3
?? dir/file_untracked4
There doesn't seem to exist a configuration option for this, and git config --global alias.status "status --short" does not work. I haven't managed to create an alias in zsh either.
How can I make git status to use the short format by default?
回答1:
Starting git1.8.4 (July 2013), you can configure git status to use short by default.
See commit 50e4f757f4adda096239c1ad60499cf606bf2c6f:
Some people always run '
git status -s'.
The configuration variablestatus.shortallows to set it by default.
So:
git config status.short true
And you would be all set!
Ben Allred adds in the comments:
A quick test shows that
git config status.branch trueworks as well, to show the branch information in conjunction with short-format.
It was reversed for a time:
Commit 908a0e6b98e5a7c4b299b3643823bdefb4fa512e:
It makes it impossible to "
git commit" whenstatus.shortis set, and also "git status --porcelain" output is affected bystatus.branch.
But it is now back, still for git 1.8.4 (July/August 2013)
See commit f0915cbaf476d63f72c284057680809ed24fbe0d:
commit: make it work with
status.shortWith "
status.short" set, it is now impossible to commit with status.short set, because it acts like "git commit --short", and it is impossible to differentiate between a status_format set by the command-line option parser versus that set by the config parser.To alleviate this problem, clear
status_formatas soon as the config parser has finished its work.Signed-off-by: Ramkumar Ramachandra
回答2:
Use a different alias. Instead of trying to alias 'status', do:
git config --global alias.s 'status --short'
Now "git s" gives you short output, and "git status" gives you long output.
回答3:
The easiest way is to use another alias, as I suggest in my comment. I think there is no way to create an alias with the name of a built-in command. If you insist on using git status, another option is (git is open source after all):
- get the git source code (e.g. http://github.com/git/git/)
- open the file
builtin/commit.c - look for the function
int cmd_status(int argc, const char **argv, const char *prefix) - at the bottom you find a
switch-statement - comment out the two lines as shown in the following code
- add the line as in the following code
code:
...
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;
}
...
- remake git
回答4:
You may create an alias.
But I'd create bash script:
#!/bin/bash
git status --short
save this script in ~/bin/gits (or /usr/bin/gits and chmod 555), so typing gits gives what you want.
来源:https://stackoverflow.com/questions/2927672/how-can-i-get-git-status-to-always-use-short-format