Durante el trabajo con su repositorio git, puede terminar retrocediendo de las operaciones y haciendo otros movimientos que causen manchas intermedias, e incluso algunas cosas que git hace por usted para ayudar a evitar la pérdida de información.
Eventualmente (condicionalmente, de acuerdo con la página de manual de git gc ) realizará la recolección de basura y limpiará estas cosas. También se puede forzar al invocar el proceso de recolección de basura, git gc
.
Para obtener más información al respecto, consulte Mantenimiento y recuperación de datos en el sitio git-scm.
Una ejecución manual de GC saldrá por defecto 2 semanas antes del tiempo de ejecución de este comando de una red de seguridad. De hecho, se recomienda ejecutar el GC ocasionalmente para ayudar a garantizar el uso eficaz de su repositorio git. Sin embargo, como todo, debes entender lo que está haciendo antes de destruir las cosas que pueden ser importantes para ti.
git gc
, y 2) no necesito preocuparme por esto porque estos bits colgantes son normales y ya están bien manejarlos?Bloque colgante = Un cambio que llegó al área / índice de preparación pero que nunca se comprometió. ¡Una cosa que es sorprendente con git es que una vez que se agrega al área de preparación, siempre puedes recuperarlo porque estos blobs se comportan como commits ya que también tienen un hash!
Dangling commit = Una confirmación a la que no se vincula directamente ninguna confirmación secundaria, rama, etiqueta u otra referencia. ¡Puedes recuperarlos también!
fuente
CÓMO eliminar todas las confirmaciones colgantes de su repositorio git de http://www.tekkie.ro/news/howto-remove-all-dangling-commits-from-your-git-repository/
Asegúrese de que realmente desea eliminarlos, ya que podría decidir que los necesita después de todo.
fuente
Un commit colgante es un commit que no está asociado con la referencia, es decir, no hay forma de alcanzarlo.
Por ejemplo, considere el siguiente diagrama. Supongamos que eliminamos la rama branchX sin fusionar sus cambios, luego commit D se convertirá en un commit colgante porque no hay ninguna referencia asociada con él. Si se hubiera fusionado en maestro, las referencias HEAD y maestra habrían apuntado a confirmar D y ya no estaría colgando, incluso si eliminamos la función X. Lea la nota después del diagrama para comprender esto mejor.
Git recolecta basura automáticamente (es decir, elimina) confirmaciones colgantes. Podemos usar el
git reflog
para recuperar una rama (de confirmaciones pendientes) que se eliminó sin fusionarla. Podemos recuperar confirmaciones eliminadas solo si está presente en el almacén de objetos local. Si fue basura recolectada, entonces no podemos recuperarla.Tenga en cuenta que el nombre de una rama, es decir, la etiqueta de la rama, en realidad es una referencia a la última confirmación de una rama, es decir, la punta de la rama. En el diagrama anterior, featureX, master y HEAD son solo referencias a confirmaciones específicas. Las etiquetas featureX y master se refieren a los últimos commits en sus respectivas sucursales. HEAD generalmente se refiere a la punta de la rama actualmente desprotegida (maestro en este caso). Si comprueba una confirmación anterior en su rama actual, HEAD estará en un estado separado, es decir, señalará la confirmación anterior en lugar de la última. También tenga en cuenta que HEAD se denomina referencia simbólica porque en realidad apunta a la etiqueta de rama actual y cualquier etiqueta de rama siempre apunta a la punta de la rama. Entonces, en circunstancias normales, HEAD señala indirectamente a la última confirmación.
Como comentario adicional, tenga en cuenta que Git representa su gráfico / historial de compromiso como un gráfico acíclico dirigido . Cada confirmación tiene una referencia a él padre. Por lo tanto, las flechas en un diagrama de confirmación apuntan desde la confirmación secundaria a la confirmación primaria. Necesitamos una referencia a la última confirmación secundaria para llegar a las confirmaciones anteriores en una rama.
PD : el diagrama y la comprensión anteriores se obtuvieron de este curso gratuito . Aunque el curso es bastante antiguo, el conocimiento sigue siendo relevante.
fuente