¿Qué es un Ref en Git?

El error que recibí al intentar impulsar sugiere que consulte la 'Nota sobre los avances rápidos' en 'git push –help'

Esta nota contiene el párrafo

Cuando una actualización cambia una twig (o más en general, una ref) que solía apuntar al compromiso A para apuntar a otro compromiso B, se denomina actualización de avance rápido si y solo si B es un descendiente de A.

Estoy adivinando que "una actualización" significa cambios en el código que he hecho y que estos cambios estarían en mi twig actual (por lo tanto, tengo una twig modificada), pero ¿qué significa "(o más en general, una ref) "?

No puedo encontrar la palabra "ref" en este glosario

Puedo ver una carpeta llamada "refs" dentro de mi directory .git

¿Qué es un ref?

Use el glosario de Git en su lugar:

Un nombre que comienza con refs/ (ej. refs/heads/master ) que apunta a un nombre de object u otro ref …

Tenga en count que los nombres de las twigs, como master , son simplemente refs (references) que comienzan con refs/heads/ . Todas las tags comienzan con refs/tags/ . Por lo tanto, la reference es una forma generalizada que abarca nombres de twigs, nombres de tags y más nombres.

Supongo que "una actualización" significa cambios en el código que hice …

(énfasis mío)

No: la idea aquí es que una reference como un nombre de twig contiene un hash de confirmación ; lo que se está actualizando es el hash contenido. Si refs/heads/master contiene, por ejemplo, el ID de 932b573406fda922d8edbecb0d7f9ad3ce9155ec este momento, y le preguntas a Git que lo actualice para contener d35688db19c9ea97e9e2ce751dc7b47aee21636b lugar, Git puede comprobar para ver si comprometerse 932b573406fda922d8edbecb0d7f9ad3ce9155ec es un antepasado de cometer d35688db19c9ea97e9e2ce751dc7b47aee21636b . Si es así, esta actualización es un avance rápido.

Cada compromiso es una instantánea pura. Git no compara los contenidos de las instantáneas de compromiso a less y hasta que se lo pida. La mayoría de las veces, busca en cambio el gráfico de compromiso, que se forma al conectar cada nodo de compromiso (identificado por su ID de hash) con sus nodos principales (identificados por sus ID de hash).