Saltar al contenido

¿Cuál es la diferencia entre git reflog y log?

Haz todo lo posible por interpretar el código de forma correcta antes de usarlo a tu proyecto si tquieres aportar algo puedes dejarlo en los comentarios.

Solución:

git log muestra el HEAD actual y su ascendencia. Es decir, imprime los puntos de confirmación HEAD, luego su padre, su padre, etc. Atraviesa la ascendencia del repositorio, buscando de forma recursiva el padre de cada confirmación.

(En la práctica, algunas confirmaciones tienen más de un padre. Para ver un registro más representativo, use un comando como git log --oneline --graph --decorate.)

git reflog no atraviesa la ascendencia de HEAD en absoluto. El reflog es una lista ordenada de las confirmaciones a las que HEAD ha apuntado: es el historial de deshacer de su repositorio. El reflog no es parte del repositorio en sí (se almacena por separado de las confirmaciones mismas) y no se incluye en empujes, recuperaciones o clones; es puramente local.

Aparte: comprender el reflog significa que realmente no puede perder datos de su repositorio una vez que se ha comprometido. Si restablece accidentalmente a una confirmación anterior, o cambia la base de forma incorrecta, o cualquier otra operación que “elimine” visualmente las confirmaciones, puede usar el reflog para ver dónde estaba antes y git reset --hard vuelva a esa referencia para restaurar su estado anterior. Recuerde, las referencias implican no solo el compromiso, sino todo el historial detrás de él.

  • git log muestra el registro de confirmación accesible desde las referencias (cabezas, etiquetas, controles remotos)
  • git reflog es un registro de todas las confirmaciones a las que se hace referencia en su repositorio en cualquier momento.

Es por eso que git reflog (a local grabación que se poda después de 90 días de forma predeterminada) se usa cuando realiza una operación “destructiva” (como eliminar una rama), para recuperar el SHA1 al que hizo referencia esa rama.
Ver git config:

gc.reflogexpire
gc..reflogexpire

git reflog expirar elimina las entradas de registro anteriores a este tiempo; el valor predeterminado es 90 días.
Con “” (p.ej “refs/stash“) en el medio, la configuración se aplica solo a las referencias que coinciden con .

red de seguridad

git reflog a menudo se hace referencia como “su red de seguridad”

En caso de problemas, el consejo general, cuando git log no muestra lo que está buscando, es:

Mantenga la calma y use git reflog

mantenga la calma

Nuevamente, reflog es una grabación local de su SHA1.
Opuesto a git log: si empuja su repositorio a un repositorio ascendente, verá lo mismo git log, pero no necesariamente el mismo git reflog.

Aquí está la explicación de reflog del libro Pro Git:

Una de las cosas que hace Git en segundo plano mientras estás trabajando es mantener un reflog: un registro de dónde han estado tus referencias HEAD y branch durante los últimos meses.

Puedes ver tu reflog usando git reflog:

$ git reflog
734713b... [email protected]0: commit: fixed refs handling, added gc auto, updated
d921970... [email protected]1: merge phedders/rdocs: Merge made by recursive.
1c002dd... [email protected]2: commit: added some blame and merge stuff
1c36188... [email protected]3: rebase -i (squash): updating HEAD
95df984... [email protected]4: commit: # This is a combination of two commits.
1c36188... [email protected]5: rebase -i (squash): updating HEAD
7e05da5... [email protected]6: rebase -i (pick): updating HEAD

Cada vez que la sugerencia de su sucursal se actualiza por cualquier motivo, Git almacena esa información por usted en este historial temporal. Y también puede especificar confirmaciones más antiguas con estos datos.

El reflog El comando también se puede usar para eliminar entradas o caducar entradas del reflog que son demasiado antiguas. De la documentación oficial de Git del kernel de Linux para reflog:

El subcomando expire se utiliza para eliminar entradas de registro anteriores.

Para eliminar entradas individuales del reflog, use el subcomando delete y especifique la entrada exacta (p. ej. git reflog delete [email protected]2).

Agradecemos que desees añadir valor a nuestra información asistiendo con tu veteranía en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *