La respuesta es básicamente "no" (excepto en esa máquina), porque el reflog es un registro de reasignaciones hechas localmente de algún nombre de referencia. Esencialmente, cada vez que se ejecute la actualización git update-ref -m msg <name> <target>
... se registra a nivel local: .git/logs/<name>
para crear una línea añadida:
$ git update-ref -m foo HEAD HEAD^
$ tail -1 .git/logs/HEAD
2418b6ba8fd0289933c9351260a272b8e410867f 8d945134b0cead535d66af29c8eb4228b5dc3763 [redacted] <[redacted]> 1334106483 -0600 foo
(la cosa antes del mensaje, en este caso foo
, no es espacios, sino más bien una ficha; I lo expandió para propósitos de SO). Conceptualmente, todo lo demás que mueve una sugerencia de rama invoca git update-ref
para hacerlo (algunos son scripts de shell y literalmente hacen eso, otros solo invocan el código C que hace todas las actualizaciones de archivos) ... y todo en .git/logs
constituye el reflog.
Si hubiera elementos en los protocolos subyacentes de git: // y/o ssh: // que te permiten acceder al reflog, eso lo haría, pero hasta donde sé, no es así.
Si tiene acceso al sistema de archivos del sistema remoto (que a menudo es un repositorio simple) siempre tiene la opción de ejecutar git reflog allí. Pero tener ese acceso normalmente no es posible. Tengo la costumbre de hacer esto posible en los servidores de git (utilizando un recurso compartido de solo lectura), solo para posibilitar la revisión del reflog en el lado del servidor. –