¿Cómo buscar un repositorio de Git mediante mensaje de confirmación?
Revisé algo de código fuente en GIT con el mensaje de confirmación "Compilación 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 comando?
Actualizar
- Comprobado en las versiones 0043, 0044, 0045 y 0046 usando SmartGIT.
- Probé 0043 y registré versiones hasta 0051 en una rama diferente.
- Revisé 0043 nuevamente.
- Ahora, 0051 ha desaparecido.
Actualizar
El código fuente definitivamente está ahí, ahora es cuestión de comprobarlo:
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>
Para buscar en el registro de confirmación (en todas las ramas) el texto dado:
git log --all --grep='Build 0051'
Para hacerlo ignorando mayúsculas y minúsculas en la búsqueda grep:
git log --all -i --grep='Build 0051'
Para buscar el contenido real de las confirmaciones a través del historial de un repositorio, use:
git grep 'Build 0051' $(git rev-list --all)
para mostrar todas las instancias del texto dado, el nombre del archivo que lo contiene y la confirmación sha1.
Y para hacer esto ignorando mayúsculas y minúsculas, use:
git grep -i 'Build 0051' $(git rev-list --all)
Tenga en cuenta que esto busca en todo el contenido de la confirmación en cada etapa, y no solo en los cambios de diferencia. Para buscar solo los cambios de diferencias, utilice uno de los siguientes:
git log -S[searchTerm]
git log -G[searchTerm]
Finalmente, como último recurso, en caso de que su confirmación esté pendiente y no esté conectada en absoluto al historial, puede buscar en el registro con la -g
bandera (abreviatura de --walk-reflogs
:
git log -g --grep='Build 0051'
EDITAR: si parece que ha perdido su historial, verifíquelo reflog
como su red de seguridad. Busque la compilación 0051 en una de las confirmaciones enumeradas por
git reflog
Es posible que simplemente lo hayas configurado HEAD
en una parte del historial en la que la confirmación 'Build 0051' no es visible, o es posible que en realidad lo hayas eliminado. El artículo reflog listo para git puede ser de ayuda.
Para recuperar su confirmación del reflog : realice un checkout en git de la confirmación que encontró (y opcionalmente cree una nueva rama o etiqueta como referencia)
git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
# alternative, using reflog (see git-ready link provided)
# git checkout HEAD@{10}
git checkout -b build_0051 # make a new branch with the build_0051 as the tip
puse esto en mi ~/.gitconfig
:
[alias]
find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep
Luego puedo escribir "git find string" y obtengo una lista de todas las confirmaciones que contienen esa cadena en el mensaje. Por ejemplo, para encontrar todas las confirmaciones que hacen referencia al ticket n.° 33:
029a641667d6d92e16deccae7ebdeef792d8336b Added isAttachmentEditable() and isAttachmentViewable() methods. (references #33)
M library/Dbs/Db/Row/Login.php
a1bccdcd29ed29573d2fb799e2a564b5419af2e2 Add permissions checks for attachments of custom strategies. (references #33).
M application/controllers/AttachmentController.php
38c8db557e5ec0963a7292aef0220ad1088f518d Fix permissions. (references #33)
M application/views/scripts/attachment/_row.phtml
041db110859e7259caeffd3fed7a3d7b18a3d564 Fix permissions. (references #33)
M application/views/scripts/attachment/index.phtml
388df3b4faae50f8a8d8beb85750dd0aa67736ed Added getStrategy() method. (references #33)
M library/Dbs/Db/Row/Attachment.php