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
110es 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-logygitdiffcore. 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 -Gpara encontrar las confirmaciones interesantes, utilizando--format=%Hpara producir una lista de hashes de confirmación. Luego itera sobre cada confirmación interesante, pidiendogit grepmostrar 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
-Glugar de-Scomo 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; doneTambié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.jsogit gui blame file.js?git gui blame file.jshará 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 logbásicamente lo hará por usted, si todo lo que necesita es una comparación visual:-U0significa 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