Verifiqué un código fuente en GIT con el mensaje de confirmación "Build 0051".
Sin embargo, parece que ya no puedo encontrar ese código fuente: ¿cómo extraigo esta fuente del repositorio GIT, usando la línea de comandos?
Actualizar
- Comprobado en las versiones 0043, 0044, 0045 y 0046 utilizando SmartGIT.
- Retiró 0043, y registró versiones hasta 0051 en una sucursal diferente.
- Retirado 0043 de nuevo.
- Ahora, 0051 ha desaparecido.
Actualizar
El código fuente definitivamente está ahí, ahora es cuestión de verificarlo:
C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date: Fri Aug 19 17:24:51 2011 +0100
20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
C:\Source>
Respuestas:
Para buscar el registro de confirmación (en todas las ramas) para el texto dado:
Para buscar el contenido real de los commits a través del historial de un repositorio, use:
para mostrar todas las instancias del texto dado, el nombre del archivo que contiene y el commit sha1.
Finalmente, como último recurso en caso de que su commit esté colgando y no esté conectado al historial, puede buscar el registro en sí mismo con la
-g
bandera (abreviatura de--walk-reflogs
:EDITAR: si parece haber perdido su historial, verifique
reflog
como su red de seguridad. Busque Build 0051 en uno de los commits listados porEs posible que simplemente haya configurado
HEAD
una parte de la historia en la que el compromiso 'Build 0051' no está visible, o puede que realmente lo haya borrado. El artículo de registro de git ready puede ser de ayuda.Para recuperar su commit del reflog : realice una comprobación git del commit que encontró (y opcionalmente haga una nueva rama o etiqueta para referencia)
fuente
git grep 'search' $(git rev-list --all)
, intentegit rev-list --all | xargs git grep 'search'
Puse esto en mi ~ / .gitconfig:
Entonces puedo escribir "git find string" y obtengo una lista de todos los commits que contienen esa cadena en el mensaje. Por ejemplo, para encontrar todas las confirmaciones que hacen referencia al ticket # 33:
fuente
--pretty=\"format:%Cgreen%H %Cblue%s%Creset\"
find = log --all --pretty=\"format:%Cgreen%H %Cblue%s\n%b%Creset\" --name-status --grep
. Tenga en cuenta los caracteres--all
y%b
. Thx @AshleyCoolman por lareset
propina.find = log --oneline --name-status -i --grep
Aunque es un poco tarde, existe
:/
la notación dedicada para especificar una confirmación (o revisión) basada en el mensaje de confirmación, solo prefija la cadena de búsqueda con:/
, por ejemplo:Aquí
<message>
puede haber un patrón de expresión regular complejo que consta de espacios en blanco, así que asegúrese de citar / escapar cuando sea necesario, por ejemplo:Alternativamente, se puede especificar un punto de inicio, para encontrar la confirmación más cercana accesible desde un punto específico, por ejemplo:
Ver: manual de revisiones de git .
fuente
fuente
debería hacer el truco
fuente
¡Prueba esto!
fuente
git grep
lugar de grep normal, y proporcionar la--all
bandera para buscar múltiples ramas.git log --all --grep='Build 0051'
(la respuesta de @ shelhamer)git log -g
. Es posible que haya perdido el historial en un reinicio, pero aún puede verificar el registro de registro si no se ha recolectado basura.primero uso
git log --oneline
para encontrar el SHA del commit (Mensaje), luego lo uségit log --stat 8zad24d
con el SHA (el primer ejemplo de sha sha de parejas (8zad24d)) para encontrar la información correctafuente
Esta:
o esto:
Los comandos funcionan mejor para mí.
fuente
Para buscar en todas las ramas
Una vez que sepa a qué compromiso quiere llegar
fuente
Si el cambio no es demasiado antiguo, puede hacerlo,
git reflog
y luego verifique la identificación de confirmación
fuente