¿Cuál es la diferencia entre – – y – antes de una opción de command?

En git, podemos modificar commands con --some-thing o -s . Al observar el uso, parece que el prefijo de doble guión es para nombres completos de opciones, mientras que el guión único es para la abreviatura. ¿Es eso correcto o hay más?

Muchas de las opciones con nombre completo (es decir, las que tienen el prefijo a -- ) tienen una abreviatura con un prefijo simple - . Por ejemplo, git log --grep=mureinik -i es equivalente a git log --grep=mureinik --regexp-ignore-case .

Si la opción toma un argumento, tenga en count que los interruptores de taquigrafía están separados de sus arguments con un espacio en blanco, mientras que los nombres más largos utilizan el operador = . Por ejemplo, git log -n 10 es equivalente a git log --max-count=10 .

Esa es de hecho la diferencia.

Muchos commands le permiten "agrupar" opciones. Para esos commands,

 foo -bar 

es lo mismo que

 foo -b -a -r 

Para distinguir las opciones agrupadas de las opciones con nombres más largos, -- se utiliza para indicar esto último. Eso significa que

 foo --bar 

solo especifica una opción.

Esta es una convención bien conocida adoptada por todas las herramientas que quieren evitar confusiones.