git checkout vs git checkout HEAD vs git checkout <ACTUALIZACIÓN ACTUAL> vs git checkout – <DIRECCIÓN DE TRABAJO>

Estoy tratando de determinar las diferencias que existen entre los siguientes 4 commands.

Supongamos que la twig actual es master , y el directory actual es el "directory de trabajo", es decir, aquel donde está el .git .

 git checkout git checkout HEAD git checkout master git checkout -- . 

Por lo que puedo decir, los primeros dos commands son completamente equivalentes , y son esencialmente no-op (excepto por el hecho de que ambos pueden producir algún resultado); el tercero es casi idéntico a los dos primeros, excepto que producirá, además de cualquier otra salida, el producto anterior, la línea Already on 'master'. El último command, en contraste con todos los demás, descartará todos los cambios no registrados.

¿Me he perdido algo?

Según TFM , hay cuatro forms del command de git checkout . Sus primeros dos ejemplos son uno de ellos, y sus otros dos ejemplos son dos más.

Entonces, para responder a su pregunta, se ha perdido la última forma de git checkout de git checkout :

git checkout -b <new branch name> <start point>

Los primeros 3 son lo mismo (y no son no -ops, si cambiaste algunos files serán reemplazados por los que están en la punta del maestro). El 4to chequea solo los files en '.', Es decir, el directory actual.