git checkout -. vs git checkout

Siempre utilicé git checkout -- . para borrar mi directory de trabajo Pensé que leí en alguna parte que el -- se requería para evitar pensar que estás pasando parameters (o algo)

Ahora un colega me dijo que podía soltar el -- , y de hecho, una testing rápida hizo exactamente lo mismo.

¿Hay alguna diferencia entre esos dos commands?

PD: preguntando aquí porque git checkout -- . vs git checkout . es un poco difícil de google …

Me parece recordar que -- es una forma de decirle a Git que trate lo que sigue a la checkout como un file y no como una twig. Supongamos que tiene un file y una twig llamados stuff . Entonces, el siguiente command parecería ambiguo:

 git checkout stuff 

porque no está claro si está solicitando la salida de un file o una sucursal. Al usar -- le dices explícitamente a Git que revise un file por ese nombre / ruta. Entonces, en este caso, los siguientes commands permiten verificar una twig y un file llamado stuff :

 git checkout stuff # checkout the branch stuff git checkout -- stuff # checkout the file stuff 

Tenga en count que git checkout <name> está realmente destinado a las twigs, pero la syntax de Git es relajada, y si Git no puede encontrar una twig, searchá un file.

Muy relacionado: twig de cambio de Git cuando el file del mismo nombre está presente

-- como muchos de los progtwigs de command-line de UNIX utilizan un argumento independiente (es decir, que no forma parte de otro argumento) para indicar que todo lo que lo sigue no es un argumento.

¿Por qué? Bueno, en este caso, está siendo utilizado en caso de que tenga una ruta cuyo nombre comience con -- , que no debe interpretarse como su propio argumento.

es decir, git checkout -- --mydirectory que, sin el -- arrojaría un error.