¿Cuál es el significado de los guiones dobles antes del nombre del archivo en este comando git?
git checkout --ours -- path/to/file.txt
git checkout --theirs -- path/to/file.txt
¿Son obligatorios? ¿Es equivalente a
git checkout --ours path/to/file.txt
git checkout --theirs path/to/file.txt
git
git-checkout
mottalrd
fuente
fuente
Respuestas:
Supongamos que tengo un archivo llamado
path/to/file.txt
en mi repositorio de Git y quiero revertir los cambios en él.Ahora suponga que el archivo se llama
master
...Whoops! Eso cambió las ramas en su lugar. Los
--
separa el árbol que desee comprobar hacia fuera a partir de los archivos que desea retirar.También nos ayuda si algún freako agregó un archivo llamado
-f
a nuestro repositorio:Esto está documentado en git-checkout: Argument Disambiguation .
fuente
--
se puede usar para separar las opciones de otros argumentos, por lo que lo verá en comandos comocp
ymv
(que no son parte de Bash).checkout
documentación del comando?checkout
comando, pero en ningún lugar la documentación explica qué hace o por qué se usa ... que es lo que finalmente me trajo aquí.--
. Como alguien que no proviene de un entorno Linux, no es obvio lo que hace. Para mí, parecía ser una sintaxis específica de git, sin una descripción de su propósito funcional. Creo que sería mejor tener una breve descripción como las otras opciones, o al menos un enlace a una página de manual de Linux .El guión doble "-" significa "marcas de fin de línea de comando", es decir, le dice al comando anterior que no intente analizar lo que viene después de las opciones de línea de comando.
fuente
git
significa más que esto, ya que también significa que el argumento después del--
no puede ser un nombre de rama, y por implicación el argumento anterior--
no puede ser una ruta de archivo.Tenga en cuenta que no necesitaría, ya que Git 2.5 (Q2 2015) a '
--
' si su argumento incluye comodín (*
)Una "heurística para ayudar a la"
git <cmd> <revs> <pathspec>
"convención de línea de comandos para atrapar rutas mal escritas es asegurarse de que todos los parámetros que no sean de revoluciones en la parte posterior de la línea de comandos sean nombres de los archivos en el árbol de trabajo, pero eso significa"git grep $str -- \*.c
"siempre debe ser desambiguado con "--
", porque nadie cuerdo creará un archivo cuyo nombre literalmente es asterisco-punto-ver.Git 2.5 pierde la heurística para declarar que con una cadena comodín el usuario probablemente tenía la intención de darnos una especificación de ruta .
Ver commit 28fcc0b (02 de mayo de 2015) por Duy Nguyen (
nguyenlocduy
) .(Fusionada por Junio C Hamano -
gitster
- en commit 949d167 , 19 de mayo de 2015)Con Git 2.26 (Q1 2020), la lógica de desambiguación para distinguir las revisiones y las rutas específicas se ha modificado para que los caracteres especiales de globo de escape con barra invertida no cuenten en la regla "los comodines son rutas específicas".
Ver commit 39e21c6 (25 de enero de 2020) por Jeff King (
peff
) .(Fusionada por Junio C Hamano -
gitster
- en commit 341f8a6 , 12 de febrero de 2020)( DWIM: Haz lo que quiero decir )
fuente