W3docs

Introducción

Descripción general de los comandos git status, git log, git tag y git blame, con ejemplos básicos de uso para examinar un repositorio.

git blame

Una vez que tienes un repositorio Git con algo de historial, la mayor parte de tu trabajo diario no consiste en cambiar archivos, sino en comprender su estado actual y pasado. Antes de hacer un commit, un push o revertir cualquier cosa, normalmente querrás responder preguntas como: ¿Qué he cambiado pero aún no guardado? ¿Quién escribió esta línea y por qué? ¿Cuándo se introdujo este error? ¿A qué versión pertenece este commit?

Esta parte del tutorial cubre los cuatro comandos a los que se recurre con más frecuencia al examinar un repositorio en lugar de modificarlo:

ComandoLo que respondeAlcance
git status¿Qué ha cambiado desde el último commit y qué está en el área de preparación?Directorio de trabajo + área de preparación
git log¿Cuál es el historial de commits?Solo instantáneas confirmadas
git tag¿Qué commits son notables (p. ej., versiones)?Punteros con nombre a commits
git blame¿Quién modificó por última vez cada línea y en qué commit?Autoría por línea de un archivo

A continuación se resume cada comando con un ejemplo rápido. Las páginas siguientes cubren cada opción en detalle.

git status

El comando git status muestra el estado del directorio de trabajo y del área de preparación, permitiéndote ver qué cambios están preparados para el próximo commit y qué archivos aún no están siendo rastreados por Git. No muestra el historial de commits confirmados — solo la diferencia entre tus archivos actuales y el último commit.

Ejecútalo dentro de cualquier repositorio:

$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   index.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
        modified:   style.css

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        notes.txt

Aquí index.html está preparado (irá al próximo commit), style.css está modificado pero no preparado, y notes.txt es completamente nuevo y no está rastreado. Convierte git status en un hábito antes de cada commit para no incluir accidentalmente — ni olvidar — un archivo.

git log

El comando git log examina el historial confirmado de un repositorio y te ayuda a encontrar una versión concreta del proyecto. Lista, filtra y busca commits, pero solo opera sobre el historial confirmado, por lo que nada que aún no hayas hecho commit aparecerá.

$ git log --oneline -3
9a3c1f4 (HEAD -> main) Fix navbar alignment on mobile
1d72b08 Add contact form validation
f0e5a91 Initial commit

El indicador --oneline condensa cada commit a su hash corto y su asunto. Puedes filtrar por autor (--author), por fecha (--since, --until) o por contenido (-S "searchterm") para localizar exactamente cuándo ocurrió un cambio. Para inspeccionar un commit individual en detalle, combina git log con git show.

git tag

Las etiquetas son referencias que apuntan a puntos específicos y notables en el historial de Git. Su principal propósito es marcar una versión — por ejemplo v1.0.0. A diferencia de una rama, una etiqueta no se mueve al añadir nuevos commits; una vez creada, apunta permanentemente a la misma instantánea.

$ git tag v1.0.0          # create a lightweight tag on the current commit
$ git tag                 # list existing tags
v1.0.0
$ git tag -a v1.1.0 -m "Release 1.1.0"   # create an annotated tag with a message

Una etiqueta ligera es simplemente un nombre para un commit, mientras que una etiqueta anotada (-a) también almacena el autor de la etiqueta, una fecha y un mensaje — las etiquetas anotadas son las recomendadas para versiones. Las etiquetas no se envían automáticamente; se comparten con git push origin v1.0.0 (o git push --tags).

git blame

El comando git blame muestra los metadatos de autoría asociados a cada línea de un archivo: el commit, el autor y la fecha en que se modificó por última vez esa línea. Es la herramienta ideal para entender por qué existe una línea concreta y a quién preguntar al respecto.

$ git blame -L 1,3 index.html
9a3c1f4a (Jane Doe  2024-03-12 10:22:01 +0000  1) <!DOCTYPE html>
1d72b08c (John Roe  2024-02-28 14:05:33 +0000  2) <html lang="en">
9a3c1f4a (Jane Doe  2024-03-12 10:22:01 +0000  3)   <head>

El indicador -L 1,3 limita la salida a las líneas 1–3. Cada línea tiene como prefijo el hash corto del commit, el autor y la marca de tiempo del último cambio. Para profundizar en uno de esos commits, copia su hash en git show o git log.

Examinar frente a modificar

Un modelo mental útil: estos comandos son de solo lectura. Ninguno de git status, git log, git tag (al listar) o git blame altera tus archivos ni el historial — únicamente informan del estado. Esto los hace seguros para ejecutar en cualquier momento. Cuando realmente quieras cambiar lo que está registrado, recurrirás a otras herramientas como git commit, git checkout, o git diff para previsualizar los cambios primero.

Práctica

Práctica
¿Cuál de las siguientes afirmaciones describe correctamente las funcionalidades de los distintos comandos Git para examinar un repositorio?
¿Cuál de las siguientes afirmaciones describe correctamente las funcionalidades de los distintos comandos Git para examinar un repositorio?
Was this page helpful?