Diferencia entre git checkout HEAD – nombre de file y git checkout – nombre de file

Comencemos con una situación.

  1. Guardo algunos cambios (5 files) git stash
  2. Cambiar algunos files
  3. Confirme los cambios git commit -m "Commit message"
  4. Obtenga los cambios de la aplicación de stash git stash apply

Recibo un conflicto de combinación en 2 files debido a la confirmación. Ya no quiero los cambios en esos 2 files. Intenté revertir esos cambios.

Hice la git checkout -- background.js

Falló con error

error: path 'src / background / background.js' no está enlazado

Pero luego leí esta publicación SO e intenté

 git checkout HEAD -- background.js 

Funciona con éxito. Me pasó a mí por los dos files. Quiero entender la diferencia

git checkout -- file AND git checkout HEAD -- file

Normalmente no hay mucha diferencia. La key es que tienes conflictos para resolver. De las páginas del manual http://csurs.csr.uky.edu/cgi-bin/man/man2html?1+git-checkout

git checkout [–patch] [] [-] …

El índice puede contener inputs no fusionadas debido a una fusión fallida anterior. De forma pnetworkingeterminada, si intenta verificar dicha input desde el índice, la operación de pago fallará y no se extraerá nada. El uso de -f ignorará estas inputs no fusionadas. Los contenidos de un lado específico de la combinación se pueden consultar en el índice utilizando –ours o –theirs. Con -m, los cambios realizados en el file de tree de trabajo se pueden descartar para volver a crear el resultado original de fusión en conflicto.

Estabas usando el checkout esta manera cuando estaba fallando. Entonces, por layout, la salida fallará debido a los cambios no compartidos (no se resuelven los conflictos). Al agregar HEAD le indicó a git qué "twig" usar y, por lo tanto, se procesará el file.

HEAD se refiere al SHA específico en el que se encuentra en su repository. Entonces le dices a git de dónde sacar los files de la misma manera que lo harías con una twig diferente.

    Intereting Posts