可以git commit -a -m "commit msg"
缩短为git commit -am "commit msg"
并按预期工作吗?
基本上,可以选择“短”开关,让最后一个开关接受参数吗?
答案 0 :(得分:5)
你为什么不试试?
$ echo a > a; echo b > b
$ git init
Initialized empty Git repository in /home/me/tmp/a/.git/
$ git add a b
$ git commit -m "hello"
[master (root-commit) 184d670] hello
2 files changed, 2 insertions(+), 0 deletions(-)
create mode 100644 a
create mode 100644 b b > a; echo a > b
$ git commit -am "other commit"
[master 4ec9bb9] other commit
2 files changed, 2 insertions(+), 2 deletions(-)
日志是:
commit 4ec9bb943eb230923b4669ef6021124721cb9808
Author: me
Date: Tue May 17 21:02:41 2011 +0200
other commit
a | 2 +-
b | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
commit 184d670b7862357cd8a898bfcaa79de271c09bd7
Author: me
Date: Tue May 17 21:02:23 2011 +0200
hello
a | 1 +
b | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
所以一切都很好。
但是:如果你想让官方为git做这个,请查看gitcli
手册页。它声明:
将短选项拆分为单独的单词(更喜欢git foo -a -b到git foo -ab,后者甚至可能不起作用)
所以你的里程可能会有所不同,git团队会选择单独的表格。
答案 1 :(得分:5)
是
编写良好的Unix命令允许您在单个连字符后面合并多个单字母选项,只要除了组中的最后一个选项之外的任何选项都不能参数。 Git是这些编写良好的命令之一。
许多没有在Unix shell中花费太多时间的人都没有意识到这一点,不幸的是,有时这些人最终会编写不使用标准getopt(3)
来解析他们的命令行实用程序选项,并最终编写自己的解析器,不允许您以这样的标准方式合并选项。所以有一些写得不好的命令不允许这样做。幸运的是,git 不是那些写得不好的命令之一。
答案 2 :(得分:1)
我认为海报正在询问,因为他无法访问Git,因为它显然比尝试发布更容易。值得称赞的是,我实际上努力在Git文档中找到规范的答案(没有Google的帮助,请注意)并且失败了。
$ git commit -am "yay"
# On branch master
nothing to commit (working directory clean)
请记住,Git是由Linux的创建者Linus Torvalds编写的。如果有人要严格遵守POSIX guidelines,那就是他......你会注意到标记结束选项和参数开头的双击(--
)也是Git的一部分语法:
git log -n 10 -- some/file.txt
来自git log手册页:
[--] <path>…
Show only commits that affect any of the specified paths. To prevent
confusion with options and branch names, paths may need to be prefixed
with "-- " to separate them from options or refnames.