Nuestro team de especialistas despúes de muchos días de investigación y recopilar de datos, encontramos la respuesta, nuestro deseo es que resulte útil para ti para tu plan.
Solución:
Utilizar
git show --summary `git merge-base foo master`
Si prefiere verlo en contexto usando gitk, entonces use
gitk --all --select-commit=`git merge-base foo master`
(donde foo es el nombre de la sucursal que está buscando).
Como se señaló en los comentarios y en la respuesta de Jackub, siempre que su sucursal sea más joven que la cantidad de días establecida en la configuración gc.reflogexpire
(el valor predeterminado es 90 días), luego puede utilizar su reflog para averiguar cuándo se creó por primera vez una referencia de sucursal.
Tenga en cuenta que git reflog
puede tomar la mayoría git log
banderas Tenga en cuenta además que el [email protected]
los selectores de estilo son efectivamente nociones de tiempo y, de hecho, se manejan (de una manera pirateada) como cadenas de fecha. Esto significa que puedes usar la bandera --date=local
y obtener una salida como esta:
$ git reflog --date=local 763008c [email protected]Fri Aug 20 10:09:18 2010: pull : Fast-forward f6cec0a [email protected]Tue Aug 10 09:37:55 2010: pull : Fast-forward e9e70bc [email protected]Thu Feb 4 02:51:10 2010: pull : Fast forward 836f48c [email protected]Thu Jan 21 14:08:14 2010: checkout: moving from master to master 836f48c [email protected]Thu Jan 21 14:08:10 2010: pull : Fast forward 24bc734 [email protected]Wed Jan 20 12:05:45 2010: checkout: moving from 74fca6a42863ffacaf7ba6f1936a9f228950f657 74fca6a [email protected]Wed Jan 20 11:55:43 2010: checkout: moving from master to v2.6.31 24bc734 [email protected]Wed Jan 20 11:44:42 2010: pull : Fast forward 964fe08 [email protected]Mon Oct 26 15:29:29 2009: checkout: moving from 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 4a6908a [email protected]Mon Oct 26 14:52:12 2009: checkout: moving from master to v2.6.28
También puede ser útil en ocasiones utilizar --date=relative
:
$ git reflog --date=relative 763008c [email protected]4 weeks ago: pull : Fast-forward f6cec0a [email protected]6 weeks ago: pull : Fast-forward e9e70bc [email protected]8 months ago: pull : Fast forward 836f48c [email protected]8 months ago: checkout: moving from master to master 836f48c [email protected]8 months ago: pull : Fast forward 24bc734 [email protected]8 months ago: checkout: moving from 74fca6a42863ffacaf7ba6f1936a9f228950f657 to master 74fca6a [email protected]8 months ago: checkout: moving from master to v2.6.31 24bc734 [email protected]8 months ago: pull : Fast forward 964fe08 [email protected]11 months ago: checkout: moving from 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 to master 4a6908a [email protected]11 months ago: checkout: moving from master to v2.6.28
Una última nota: la --all
flag (que en realidad es un indicador de git-log entendido por git-reflog) mostrará los registros de referencia para todas las referencias conocidas en refs/
(en lugar de simplemente, HEAD
) que le mostrará claramente los eventos de la rama:
git reflog --date=local --all 860e4e4 refs/heads/[email protected]Sun Sep 19 23:00:30 2010: commit: Second. 17695bc refs/heads/[email protected]Mon Sep 20 00:31:06 2010: branch: Created from HEAD
Pro Git § 3.1 Git Branching – What a Branch tiene una buena explicación de lo que realmente es una rama git
Una rama en Git es simplemente un puntero móvil ligero para [a] cometer.
Dado que una rama es solo un puntero ligero, 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 el historial de mi sucursal!” Especie de.
Si ejecuta alguno de los siguientes:
git log --not master
gitk --not master
verá lo que parece el “historial de su rama”, pero en realidad es una lista de confirmaciones accesibles desde la “rama” que no son accesibles desde el maestro. Esto le brinda la información que desea, pero si y solo si nunca ha fusionado ‘branch’ nuevamente con master, y nunca ha fusionado master con ‘branch’ desde que lo creó. Si usted tener fusionados, entonces esta historia de diferencias se derrumbará.
Afortunadamente, el registro de referencia a menudo contiene la información que desea, como se explica en varias otras respuestas aquí. Utilizar esta:
git reflog --date=local
para mostrar la historia de la rama. La última entrada en esta lista es (probablemente) el punto en el que creó la rama.
Si se eliminó la rama, entonces ‘branch’ ya no es un identificador de git válido, pero puede usar esto en su lugar, que puede encontrar lo que desea:
git reflog --date=local | grep
O en un shell cmd de Windows:
git reflog --date=local | find ""
Tenga en cuenta que reflog no funcionará de manera efectiva en sucursales remotas, solo en aquellas en las que haya trabajado localmente.
Puntuaciones y comentarios
Al final de todo puedes encontrar las interpretaciones de otros desarrolladores, tú asimismo puedes mostrar el tuyo si dominas el tema.