¿Hay alguna manera de determinar cuándo se creó una rama Git? Tengo una rama en mi repositorio y no recuerdo haberla creado, y pensé que tal vez ver la marca de tiempo de la creación podría activar mi memoria.
git
branch
git-branch
paxos1977
fuente
fuente

Respuestas:
Utilizar
Si prefieres verlo en contexto usando gitk, entonces usa
(donde foo es el nombre de la sucursal que está buscando).
fuente
Como se señaló en los comentarios y en la respuesta de Jackub , siempre que su rama sea más joven que la cantidad de días establecida en la configuración
gc.reflogexpire(el valor predeterminado es 90 días), puede utilizar su registro para averiguar cuándo fue una referencia de sucursal Primero creado.Tenga en cuenta que
git reflogpuede tomar la mayoría de lasgit logbanderas. Además, tenga en cuenta que losHEAD@{0}selectores de estilo son efectivamente nociones de tiempo y, de hecho, se manejan (de forma pirateada) como cadenas de fecha. Esto significa que puede usar la bandera--date=localy obtener resultados como este:$ git reflog --date = local 763008c HEAD @ {vie 20 de agosto 10:09:18 2010}: pull: avance rápido f6cec0a HEAD @ {Tue Aug 10 09:37:55 2010}: pull: Fast-forward e9e70bc HEAD @ {jue 4 de febrero 02:51:10 2010}: pull: avance rápido 836f48c HEAD @ {jue 21 de enero 14:08:14 2010}: pago: pasar de maestro a maestro 836f48c HEAD @ {jue 21 de enero 14:08:10 2010}: pull: avance rápido 24bc734 HEAD @ {Wed Jan 20 12:05:45 2010}: finalización de la compra: pasar de 74fca6a42863ffacaf7ba6f1936a9f228950f657 74fca6a HEAD @ {mié 20 de enero 11:55:43 2010}: pago: pasar de maestro a v2.6.31 24bc734 HEAD @ {mié 20 de enero 11:44:42 2010}: pull: avance rápido 964fe08 HEAD @ {Lun Oct 26 15:29:29 2009}: finalización de la compra: pasar de 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 4a6908a HEAD @ {Lun Oct 26 14:52:12 2009}: pago: pasar de maestro a v2.6.28También puede ser útil en ocasiones usar
--date=relative:$ git reflog --date = relativo 763008c HEAD @ {hace 4 semanas}: pull: avance rápido f6cec0a HEAD @ {hace 6 semanas}: pull: avance rápido e9e70bc HEAD @ {hace 8 meses}: pull: avance rápido 836f48c HEAD @ {hace 8 meses}: pago: pasar de maestro a maestro 836f48c HEAD @ {hace 8 meses}: pull: avance rápido 24bc734 HEAD @ {hace 8 meses}: pago: pasar de 74fca6a42863ffacaf7ba6f1936a9f228950f657 a master 74fca6a HEAD @ {hace 8 meses}: pago: pasar de master a v2.6.31 24bc734 HEAD @ {hace 8 meses}: pull: avance rápido 964fe08 HEAD @ {hace 11 meses}: pago: pasar de 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 a master 4a6908a HEAD @ {hace 11 meses}: pago: pasar de master a v2.6.28Una última nota: el
--allindicador (que es realmente un indicador de git-log entendido por git-reflog) mostrará los registros de todas las referencias conocidas enrefs/( en lugar de simplementeHEAD) , que le mostrará claramente los eventos de ramificación:git reflog --date = local --todos 860e4e4 refs / heads / master @ {dom sep 19 23:00:30 2010}: commit: Second. 17695bc refs / heads / example_branch @ {Mon Sep 20 00:31:06 2010}: branch: Creado desde HEADfuente
gc.reflogexpiredías.Pro Git § 3.1 Git Branching: qué es una rama tiene una buena explicación de lo que realmente es una rama git
Dado que una rama es solo un puntero liviano, git no tiene una noción explícita de su historial o fecha de creación. "Pero espera", te escucho decir, "¡por supuesto que Git conoce la historia de mi sucursal!" Especie de.
Si ejecuta alguno de los siguientes:
verá lo que parece el "historial de su rama", pero es realmente una lista de confirmaciones accesibles desde 'rama' a las que no se puede acceder desde el maestro. Esto le brinda la información que desea, pero si y solo si nunca ha fusionado 'rama' de nuevo a maestro, y nunca ha fusionado maestro a 'rama' desde que lo creó. Si se ha fusionado, entonces este historial de diferencias colapsará.
Afortunadamente, el reflog a menudo contiene la información que desea, como se explica en varias otras respuestas aquí. Utilizar este:
para mostrar la historia de la sucursal. La última entrada en esta lista es (probablemente) el punto en el que creó la rama.
Si la rama se ha eliminado, entonces 'rama' ya no es un identificador git válido, pero puede usar esto en su lugar, que puede encontrar lo que desea:
O en un shell de cmd de Windows:
Tenga en cuenta que reflog no funcionará de manera efectiva en sucursales remotas, solo en aquellas en las que haya trabajado localmente.
fuente
gc.reflogexpiredías, como se señala en esta respuesta y esta respuesta .git reflog --date=local <branch>Primero, si su bifurcación se creó dentro de los
gc.reflogexpiredías (por defecto 90 días, es decir, alrededor de 3 meses), puede usargit log -g <branch>ogit reflog show <branch>para encontrar la primera entrada en el registro de registros, que sería un evento de creación, y se parece a lo siguiente (paragit log -g):Obtendría quién creó una rama, cuántas operaciones hace y desde qué rama (bueno, podría ser simplemente "Creado desde HEAD", lo que no ayuda mucho).
Eso es lo que MikeSep dijo en su respuesta .
En segundo lugar, si tiene una rama por más tiempo
gc.reflogexpirey se ha ejecutadogit gc(o se ejecutó automáticamente), tendría que encontrar un antepasado común con la rama a partir de la cual se creó. Eche un vistazo al archivo de configuración, tal vez haya unabranch.<branchname>.mergeentrada, que le dirá en qué rama se basa este.Si sabe que la rama en cuestión se creó fuera de la rama maestra (bifurcación de la rama maestra), por ejemplo, puede usar el siguiente comando para ver un ancestro común:
También puedes probar
git show-branch <branch> master, como alternativa.Esto es lo que dijo gbacon en su respuesta .
fuente
Todavía no estoy seguro del comando git para él, pero creo que puedes encontrarlos en los reflogs.
Mis archivos parecen tener una marca de tiempo de Unix en ellos.
Actualización: parece haber una opción para usar el historial de reflog en lugar del historial de confirmación al imprimir los registros:
También puede seguir este registro, desde el momento en que creó la rama.
git logmuestra la fecha de la confirmación, sin embargo, no la fecha en la que realizó la acción que hizo una entrada en el registro. Todavía no lo he encontrado, excepto al buscar en el registro real en la ruta anterior.fuente
Prueba esto
fuente
%antes(refname)| cut -c 5- | sort -r |y luego pasé por grep durante el mes, dándome una lista en orden cronológico inverso, más o menos.--sort='-committerdate'(tenga en cuenta el '-' antes de la fecha de confirmación para el orden cronológico inverso).Utilizar:
para mostrar todo el ciclo de vida de su repositorio en la carpeta actual. El nombre de la rama que aparece por primera vez (de abajo a arriba) es la fuente que se creó.
Eso significa:
El desarrollo de la sucursal se crea (checkout -b) desde el maestro
Se crea la función Branch-jira35 (checkout -b) desde el desarrollo
La rama branch-jira-sut-46 se crea (checkout -b) a partir del desarrollo
fuente
Esto es algo que se me ocurrió antes de encontrar este hilo.
fuente
Este comando muestra la fecha de creación de la rama
devdesdemainfuente
Si desea obtener los detalles de todas las sucursales
fuente
Encontré la mejor manera: siempre reviso la última sucursal creada de esta manera
fuente
Combinado con la respuesta de Andrew Sohn ( https://stackoverflow.com/a/14265207/1929406 )
fuente
Esto lo hizo por mí: (10 años después)
Como no hay información almacenada sobre los tiempos de creación de sucursales, lo que hace es mostrar la primera confirmación de cada rama (
--no-walk), que incluye la fecha de la confirmación. Utilizar--remotespara las sucursales remotas u omítalo para las sucursales locales.Como realizo al menos una confirmación en una rama antes de crear otra, esto me permitió rastrear algunos meses de creaciones de ramas (y función dev-start) para fines de documentación.
fuente: AnoE en stackexchange
fuente
sintaxis:
git reflog --date=local | grep checkout: | grep ${current_branch} | tail -1ejemplo:
git reflog --date=local | grep checkout: | grep dev-2.19.0 | tail -1resultado:
cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout: moving from dev-2.18.0 to dev-2.19.0fuente