Hola!, no entiendo bien : Pongo <code>git log -S "cambios" </code> Pero en mi log, si tengo una palabra cambios

Nicoll Idaly Angulo Mejia

Nicoll Idaly Angulo Mejia

Pregunta
student
hace 5 años

Hola!, no entiendo bien : Pongo

git log -S "cambios"
Pero en mi log, si tengo una palabra cambios

9 respuestas
    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacher
    hace 5 años

    Hola, tienes razón, al parecer el comportamiento de este flag cambió y ahora funciona... diferente

    git log -S

    Ya NO va a mostrar todas las ocurrencias de tus commits con tal palabra a como lo explico Freddy

    Ahora lo que este comando hará es buscar en TODOS tus archivos dicha palabra, y verá si hubo alguna adición o eliminación que contenga dicha palabra

    Por ejemplo, supongamos que tienes un archivo llamado hola.txt que dentro tiene escrito "hola" y haces el primer commit, después, borras ese "hola" y escribes "adios" y haces otro commit.

    En la historia (O si haces un git diff) verás que hubo un "addition" y un "deletion", es decir, añadiste la palabra "adios" y borraste la palabra "hola".

    Entonces, si tu ejecutaras

    git log -S "hola"
    lo que va a suceder es que va a buscar entre todos tus archivos si hubo alguna adición o eliminación que contenga la palabra "hola" (En este caso hubo una eliminación que contuvo la palabra "hola") y te va a listar en qué commit sucedió (En este caso en el segundo commit ya que fue ese commit el que eliminó la palabra "hola" y agregó la palabra "adiós")

    Puedes hacer la prueba si quieres, es más, haz la prueba y dime si funciona así, yo estuve haciendo pruebas en un proyecto real y todo parece apuntar a que ahora funciona así.

    De igual manera, te dejo el enlace a la documentación oficial de esto:

    https://git-scm.com/docs/git-log#Documentation/git-log.txt--Sltstringgt

    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacher
    hace 5 años

    Vale, corrigiendo un poco mi comentario de abajo:

    Al hacer

    git log -S "hola"
    te va a mostrar ambos commits, yo dije que solo te mostraría el segundo commit, pero en realidad te muestra ambos porque en el primer commit hubo un "addition" de hola, y en el segundo commit hubo un "deletion" de hola, en ambos commits, la paabra "hola" estuvo presente en cuanto a addition o deleteion se refiere

    Pero si tu ahora, a ese archivo "hola.txt" lo editas, y eliminas la palabra "adios" que pusiste en el segundo commit, y en su lugar escribes "otra cosa" y haces un tercer commit y luego ejecutas de nuevo

    git log -S "hola"
    , en este caso te van a aparecer los dos primeros commits unicamente, porque en el tercer commit, la palabra "hola" ya no estuvo presente, ni en additions ni en deletions.

    Pero si hacer un

    git log -S "otra cosa"
    verás que únicamente te va a mostrar el tercer commit porque fue en ese commit en donde hubo un addition de "otra cosa" a tu archivo.

    Ysi haces un

    git log -S "adios"
    solo te va a mostrar el segundo y el tercer commit porque en el segundo commit estuvo el addition de "adios" y en el tercer commit estuvo el deletion de "Adios"

    Espero haberme explicado, si no entonces haré un tutorial para la clase jaja

    Sebastián Andrade

    Sebastián Andrade

    student
    hace 5 años

    La verdad la respuesta a esta pregunta me ha servido mucho, no tenia idea de esto, gracias

    Nicoll Idaly Angulo Mejia

    Nicoll Idaly Angulo Mejia

    student
    hace 5 años

    Gracias!, tuve que leerlo varias veces para poder entender..

    En otra palabras, la función

    git log -S "palabra"

    Lo que busca es los cambios que hubo en un archivo, no el mensaje log, sino los cambios, si fue de adicción o delete

    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacher
    hace 5 años

    A mí también me costó entenderlo y tuve que leerlo varias veces jaja, pero al final estuve haciendo pruebas hasta que ví como funcionaba y dije: "Ohhhhhh así funciona" me alegro que lo hayan entendido^^

    Adrian Salgado

    Adrian Salgado

    student
    hace 5 años

    Ahora para tener esos resultados puedes utilizar el comando

    git log --all --grep "palabra-clave"
    Ivan Daniel Oviedo Alvarado

    Ivan Daniel Oviedo Alvarado

    student
    hace 4 años

    git log --grep "palabra"

    Eduardo Peña Ramos

    Eduardo Peña Ramos

    student
    hace 3 años

    ¡Muchas gracias RetaxMaster por la explicación!

Curso de Git y Github [Empieza Gratis]

Curso de Git y Github [Empieza Gratis]

Deja de versionar tus proyectos usando tu propio sistema de control de versiones. Mejor usa Git, el sistema de control de versiones por excelencia que utiliza la industria tecnológica. Aprende a trabajar con git, conceptos básicos, clonar un repositorio y gestionar tus proyectos alojándolos en tu repositorio local y en GitHub.

Curso de Git y Github [Empieza Gratis]
Curso de Git y Github [Empieza Gratis]

Curso de Git y Github [Empieza Gratis]

Deja de versionar tus proyectos usando tu propio sistema de control de versiones. Mejor usa Git, el sistema de control de versiones por excelencia que utiliza la industria tecnológica. Aprende a trabajar con git, conceptos básicos, clonar un repositorio y gestionar tus proyectos alojándolos en tu repositorio local y en GitHub.