He mirado a mi alrededor y no estoy seguro de si esto es posible, pero aquí va:
Tengo un archivo (javascript) (digamos /lib/client.js) en el que tengo un identificador único asignado a una variable, así:
var identifier = "SOME_IDENTIFIER";
Puede pensar en el identificador como un número de versión: periódicamente, cambiaremos esta variable por un nuevo identificador.
Lo que me gustaría hacer es encontrar todos los identificadores únicos que hemos usado. ¿Cómo puedo hacer esto con git?
Imagino que podría haber una forma de buscar en el historial de git e imprimir la coincidencia de líneas "var identifier ="
. Podría eliminar esta lista manualmente.
De todos modos, agradecería cualquier información aquí. Gracias.
Respuestas:
Desde git 1.8.4 , hay una forma más directa de responder a su pregunta.
Suponiendo que esa línea
110
es la línea que dicevar identifier = "SOME_IDENTIFIER";
, haga esto:Esto devolverá cada confirmación que tocó esa línea de código.
[ Documentación de Git (consulte el parámetro de línea de comandos "-L")]
fuente
Consulte la página de manual para
git-log
ygitdiffcore
. Creo que este comando lo haría, pero puede que no sea del todo correcto:EDITAR: Aquí hay un comienzo aproximado para que un script bash muestre las líneas reales. Esto podría ser más lo que estás buscando.
Se utiliza
git log -G
para encontrar las confirmaciones interesantes, utilizando--format=%H
para producir una lista de hashes de confirmación. Luego itera sobre cada confirmación interesante, pidiendogit grep
mostrar las líneas de esa confirmación y el archivo que contiene la expresión regular, precedida por el hash de confirmación.EDITAR: Cambiado para usar en
-G
lugar de-S
como se sugiere en los comentarios.fuente
sfile=path/to/some_file; sfind='string_to_find'; for c in $(git log -G $sfind --format=%H -- $sfile); do git --no-pager grep -e $sfind -n $c -- $sfile; echo; done
También puedes hacer esto con gitk:
En el menú desplegable "confirmar", elija "agregar / quitar cadena:" y en el cuadro de texto junto a él, ingrese "var identifier =", y se resaltará cualquier confirmación que agregue o elimine líneas que contengan esa cadena.
fuente
git blame file.js
ogit gui blame file.js
?git gui blame file.js
hará eso ... le mostrará todas las revisiones de un archivo y quién lo cambió; puede simplemente hacer clic hacia atrás a través del historial.Si adapta la respuesta de @ rob solo un poco,
git log
básicamente lo hará por usted, si todo lo que necesita es una comparación visual:-U0
significa salida en modo parche (-p
), y muestra cero líneas de contexto alrededor del parche.Incluso puede hacer esto en todas las ramas:
Puede haber una forma de suprimir el encabezado diff, pero no conozco ninguna.
fuente
En magit , puedes hacer esto con
Luego le pedirá el archivo y las líneas iniciales y finales.
fuente