Можно ли сократить параметры git switch? - PullRequest
4 голосов
/ 17 мая 2011

Может ли git commit -a -m "commit msg" быть сокращено до git commit -am "commit msg" и работать так, как ожидается?

Как правило, параметры могут быть заданы как "короткие" переключатели и позволяют последнему переключателю принимать аргумент?

Ответы [ 3 ]

5 голосов
/ 17 мая 2011

Да.

Хорошо написанные команды Unix позволяют объединять несколько однобуквенных опций за одним дефисом, если ни один из параметров, кроме последнего в группе, не может принимать аргумент.Git - одна из этих хорошо написанных команд.

Многие люди, которые не провели много времени в оболочке Unix, не осознают этого, и, к сожалению, иногда эти люди заканчивают тем, что пишут утилиты командной строки, которые нене используйте стандарт getopt(3) для разбора их параметров, и в итоге пишете свой собственный синтаксический анализатор, который не позволяет объединять параметры стандартным способом, подобным этому.Так что есть некоторые плохо написанные команды, которые этого не позволяют.К счастью, git не одна из тех плохо написанных команд.

5 голосов
/ 17 мая 2011

Почему бы вам просто не попробовать?

$ 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(-)

Так что все хорошо.

Но: если вы хотитеОфициальный надеть это для мерзавца, проверьте gitcli справочную страницу.В нем говорится:

разделение коротких опций на отдельные слова (предпочитайте git foo -a -b вместо git foo -ab, последнее может даже не работать)пробег может варьироваться, и команда git предпочитает отдельную форму.

1 голос
/ 17 мая 2011

Я предполагаю, что постер спрашивает, потому что у него нет доступа к Git, учитывая, что было бы проще попробовать, чем опубликовать вопрос.К его чести, я действительно приложил усилия, чтобы найти канонический ответ в документации Git (без помощи Google, обратите внимание) и потерпел неудачу.

$ git commit -am "yay"
# On branch master
nothing to commit (working directory clean)

Помните, Git написан Линусом Торвальдсом, создателемLinux.Если кто-то собирается строго придерживаться правил POSIX , то это он ... Вы заметите, что двойная черта (--) для обозначения конечных опций и начала аргументов также является частьюСинтаксис Git:

git log -n 10 -- some/file.txt

Из журнала git Справочная страница:

[--] <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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...