¿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 reflog
puede tomar la mayoría de lasgit log
banderas. 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=local
y obtener resultados como este:También puede ser útil en ocasiones usar
--date=relative
:Una última nota: el
--all
indicador (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:fuente
gc.reflogexpire
dí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.reflogexpire
dí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.reflogexpire
dí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.reflogexpire
y 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>.merge
entrada, 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 log
muestra 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
dev
desdemain
fuente
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--remotes
para 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 -1
ejemplo:
git reflog --date=local | grep checkout: | grep dev-2.19.0 | tail -1
resultado:
cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout: moving from dev-2.18.0 to dev-2.19.0
fuente