2011-05-17 2 views

Répondre

5

Oui.

Les commandes Unix bien écrites vous permettent de fusionner plusieurs options à une seule lettre derrière un même tiret, tant qu'aucune des options sauf la dernière du groupe ne peut prendre un argument. Git est l'une de ces commandes bien écrites. Beaucoup de gens qui n'ont pas passé beaucoup de temps dans le shell Unix ne le réalisent pas, et malheureusement, ces gens finissent parfois par écrire des utilitaires en ligne de commande qui n'utilisent pas le standard getopt(3) pour analyser leurs options, et finissez par écrire leur propre analyseur qui ne vous permet pas de fusionner les options de la manière standard comme ceci. Il y a donc des commandes mal écrites qui ne le permettent pas. Heureusement, git est pas une de ces commandes mal écrites.

5

Pourquoi ne pas simplement essayer?

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

Le journal est:

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

Alors tout est bon.

Mais: si vous voulez que l'officiel mette cela sur git, consultez la page de manuel gitcli. Il déclare:

diviser les options courtes pour séparer les mots (préférez git foo -a -b à git foo -AB, ce dernier peut ne pas fonctionner même)

Ainsi, votre kilométrage peut varier, et forme distincte est préférée par l'équipe git.

+0

1+ pour bien votre travail, mais il pourrait être mise en œuvre spécifique ou peut-être pas pris en charge par les versions antérieures si la référence serait bien trop – mbx

+1

un excellent commentaire, d'autant plus que les personnes qui utilisent don de git Pas comme les options combinées :-) Mis à jour mon message pour refléter cela. – Mat

1

Je suppose que l'affiche demande parce qu'il n'a pas accès à Git, étant donné qu'il serait évidemment plus facile de l'essayer que de poster la question. À son crédit, j'ai fait un effort pour trouver la réponse canonique dans la documentation de Git (sans l'aide de Google, je vous en prie) et échoué.

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

Rappelez-vous, Git est écrit par Linus Torvalds, créateur de Linux. Si quelqu'un va adhérer strictement à la POSIX guidelines, il est lui ... Vous remarquerez que le double tiret (--) pour marquer les options de fin et début d'arguments fait également partie de la syntaxe Git:

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

de la page man 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. 
Questions connexes