Permítanme explicar algunos casos de uso de pago con archivo, carpeta y ramas para que pueda ser útil para comprender.
Digamos que tenemos una carpeta nombrada devy index.htmltambién se realiza un seguimiento de todo y el directorio de trabajo está limpio.
Si cambio accidentalmente el nombre del archivo index.htmly quiero deshacer eso, simplemente git checkout index.htmllo usaré, recuperará el estado del archivo de la rama actualmente seleccionada del repositorio.
Ahora, si hice algún cambio en la devcarpeta y quiero recuperarlo. Puedo usarlo, git checkout devpero ¿qué pasa si ya hay una rama nombrada en devlugar de verificar esa carpeta? Para evitar eso, preferiría hacerlo git checkout -- dev.
Ahora aquí, el doble guión desnudo representa la rama actual y le pide a git la carpeta devde la rama seleccionada actualmente.
De manera similar, si lo hago git checkout alpha dev, desplegará la carpeta dev de la rama alfa.
Esta respuesta es para su primera pregunta 'git checkout realmente significa'.