Pro Git
Pro Git Por ejemplo, digamos que tenemos las ramas master y develop que apuntan a diferentes commits, y actualmente estamos en develop (asà que HEAD la señala). Si ejecutamos git reset master, develop ahora apuntará al mismo “commit†que master. Si en cambio ejecutamos git checkout master, develop no se mueve, HEAD sà lo hace. HEAD ahora apuntará a master.
Entonces, en ambos casos estamos moviendo HEAD para apuntar al “commit†A, pero el cómo lo hacemos es muy diferente. reset moverá los puntos HEAD de la rama A, checkout mueve el mismo HEAD.
La otra forma de ejecutar checkout es con una ruta de archivo, que como reset, no mueva HEAD. Es como git reset [branch] file en que actualiza el Ãndice con ese archivo en ese “commitâ€, pero también sobrescribe el archivo en el Directorio de Trabajo. SerÃa exactamente como git reset --hard [branch] file (si reset permitiera ejecutar eso) - no está directorio-de-trabajo seguro, y no mueve a HEAD.
Además, al igual que git reset y git add, checkout aceptará una opción --patch para permitir revertir selectivamente el contenido del archivo sobre una base hunk-by-hunk.