tag - git ver archivos modificados
¿Cómo buscar un repositorio Git por mensaje de confirmación? (7)
Revisé algún 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 de GIT, usando la línea de comandos?
Actualizar
- Comprobado en las versiones 0043, 0044, 0045 y 0046 usando SmartGIT.
- Desprotegido 0043, e ingresado en versiones hasta 0051 en una rama diferente.
- Revisé 0043 de nuevo.
- Ahora, 0051 ha desaparecido.
Actualizar
El código fuente definitivamente está ahí, ahora es una 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>
Actualizar
Usó lo siguiente para recuperar el código fuente perdido:
C:/Source>git checkout HEAD@{10}
Previous HEAD position was aa09ace... 20110819 - 1045 - GL: Intermediate version. File version: v0.5.0 build 0043.
HEAD is now at 77b1f71... 20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.
Ahora, todo es visible de nuevo en SmartGit. Problema resuelto, ustedes son los mejores, especialmente @shelhamer!
¡Prueba esto!
git log | grep -b3 "Build 0051"
Aunque un poco tarde, hay :/
que es la notación dedicada para especificar una confirmación (o revisión) basada en el mensaje de confirmación, simplemente con el prefijo de la cadena de búsqueda con :/
, por ejemplo:
git show :/message
Aquí <message>
puede ser un patrón complejo de expresiones regulares que consiste en espacios en blanco, así que asegúrese de citar / escapar cuando sea necesario, por ejemplo:
git log -1 -p ":/a few words"
Alternativamente, se puede especificar un punto de inicio, para encontrar el compromiso más cercano accesible desde un punto específico, por ejemplo:
git show ''HEAD^{/fix nasty bug}''
Ver: manual de revisiones de git .
Para buscar el registro de confirmación (en todas las ramas) para el texto dado:
git log --all --grep=''Build 0051''
Para buscar el contenido real de los compromisos a través del historial de un repo, use:
git grep ''Build 0051'' $(git rev-list --all)
para mostrar todas las instancias del texto dado, el nombre del archivo que contiene y la confirmación sha1.
Finalmente, como último recurso en caso de que su compromiso esté colgando y no esté conectado a la historia, puede buscar en el propio reflog con la bandera -g
(abreviatura de --walk-reflogs
:
git log -g --grep=''Build 0051''
EDITAR: si parece que ha perdido su historial, verifique el reflog
como su red de seguridad. Busque la compilación 0051 en uno de los confirmados por
git reflog
Es posible que simplemente haya establecido su HEAD
en una parte de la historia en la que la confirmación de "Compilación 0051" no esté visible, o puede que realmente la haya destruido. El artículo de gog-ready reflog puede ser de ayuda.
Para recuperar su confirmación del reflog : haga una comprobación de git de la confirmación que encontró (y, opcionalmente, haga una nueva rama o etiqueta de la misma 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
Pongo 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 # 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
primero usé git log --oneline
para encontrar el SHA del commit (Mensaje), luego usé git log --stat 8zad24d
con el SHA (el primer ejemplo de parejas sha char (8zad24d)) para encontrar la información correcta
git log --grep="Build 0051"
debería hacer el truco
git log --grep=<pattern>
Limit the commits output to ones with log message that matches the
specified pattern (regular expression).