Git Status: inspección de un repositorio
git status
El comando git status
muestra el estado del directorio de trabajo y del área del entorno de ensayo. Permite ver los cambios que se han preparado, los que no y los archivos en los que Git no va a realizar el seguimiento. El resultado del estado no muestra ninguna información relativa al historial del proyecto. Para ello, debes usar git log
.
Comandos de Git relacionados
- git tag
- Las etiquetas son referencias que apuntan a puntos concretos en el historial de Git.
git tag
suele emplearse para capturar un punto del historial que se utiliza para publicar una versión marcada (p. ej., v1.0.1).
- Las etiquetas son referencias que apuntan a puntos concretos en el historial de Git.
- git blame
- A grandes rasgos, la función de
git blame
es visualizar los metadatos de autor adjuntos a líneas específicas confirmadas en un archivo.Esto sirve para explorar el historial del código específico y responder preguntas sobre qué código se ha añadido a un repositorio, cómo se ha añadido y por qué.
- A grandes rasgos, la función de
- git log
- El comando
git log
muestra las instantáneas confirmadas. Te permite ver el historial del proyecto, filtrarlo y buscar cambios concretos.
- El comando
Material relacionado
Chuleta de Git
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
Uso
git status
Enumera los archivos que se han preparado, los que están sin preparar y los archivos sin seguimiento.
Análisis
El comando git status
es un comando relativamente sencillo. Simplemente, muestra lo que ha ocurrido con los comandos git add
y git commit
. Los mensajes de estado también incluyen información importante para preparar archivos o deshacer su preparación. A continuación, se indica el resultado de ejemplo que muestra las tres categorías principales de una llamada de git status
:
# On branch main
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
#modified: hello.py
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#modified: main.py
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
#hello.pyc
Ignorar archivos
Los archivos sin seguimiento se suelen dividir en dos categorías. Pueden ser bien archivos que se acaban de añadir al proyecto y que no se han confirmado aún, o bien binarios compilados como .pyc
, .obj
, .exe
, etc. Mientras que resulta muy conveniente incluir los primeros en el resultado de git status
, los segundos pueden limitar las posibilidades de ver lo que ocurre en realidad en tu repositorio.
Por este motivo, Git te permite ignorar archivos completamente colocando rutas en un archivo especial denominado .gitignore
. Los archivos que quieras ignorar se deben incluir cada uno en una línea aparte y puedes usar el símbolo * como carácter comodín. Por ejemplo, añadir lo siguiente a un archivo .gitignore
en la raíz del proyecto evitará que los módulos Python compilados aparezcan en git status
:
*.pyc
Ejemplo
Es recomendable comprobar el estado del repositorio antes de confirmar los cambios, para evitar confirmar por error algo que no querías. En este ejemplo se muestra el estado del repositorio antes y después de la preparación y confirmación de una instantánea:
# Edit hello.py
git status
# hello.py is listed under "Changes not staged for commit"
git add hello.py
git status
# hello.py is listed under "Changes to be committed"
git commit
git status
# nothing to commit (working directory clean)
The first status output will show the file as unstaged. The git add
action will be reflected in the second git status
, and the final status output will tell you that there is nothing to commit—the working directory matches the most recent commit. Some Git commands (e.g., git merge) require the working directory to be clean so that you don't accidentally overwrite changes.
git log
El comando git log
muestra las instantáneas confirmadas. Te permite ver el historial del proyecto, filtrarlo y buscar cambios concretos. Mientras que git status
te permite examinar el directorio de trabajo y el entorno de ensayo, git log
solo muestra el historial confirmado.
La opción "log" se puede personalizar de diversas maneras, desde filtrar las confirmaciones hasta verlas en un formato completamente definido por el usuario. A continuación, presentamos algunas de las opciones de configuración más habituales de git log
.
Uso
git log
Este comando muestra el historial de confirmaciones completo con el formato predeterminado. Si el resultado ocupa más de una pantalla, puedes usar Espacio
para desplazarte y q
para salir.
git log -n <limit>
Esta opción limita el número de confirmaciones mediante
. Por ejemplo, git log -n 3
mostrará solo 3 confirmaciones.
Permite agrupar cada confirmación en una sola línea. Resulta útil para obtener información de alto nivel del historial del proyecto.
git log --oneline
git log --stat
Junto con la información habitual de git log
, se incluye información sobre los archivos que se han modificado y el número relativo de líneas que se han añadido o eliminado en cada uno de ellos.
git log -p
Esta opción muestra el parche que representa cada confirmación. Se muestra la diferencia completa de cada confirmación, que es la vista más detallada que puedes tener del historial del proyecto.
git log --author="<pattern>"
Search for commits by a particular author. The <pattern>
argument can be a plain string or a regular expression.
git log --grep="<pattern>"
Search for commits with a commit message that matches <pattern>
, which can be a plain string or a regular expression.
git log <since>..<until>
Solo muestra las confirmaciones que se producen entre < since >
y < until >
. Estos argumentos pueden ser un ID de confirmación, un nombre de rama, HEAD
o cualquier otro tipo de referencia de revisión.
git log <file>
Esta opción solo muestra las confirmaciones que incluyen el archivo especificado. Se trata de una forma sencilla de ver el historial de un archivo concreto.
git log --graph --decorate --oneline
A continuación, exponemos algunas opciones que debes tener en cuenta. La marca --graph dibujará un gráfico basado en texto de las confirmaciones de la parte izquierda de los mensajes de confirmación. --decorate añade los nombres de las ramas o las etiquetas de las confirmaciones que se muestran. --oneline muestra la información de confirmación en una única línea para que sea más fácil examinar las confirmaciones de un vistazo.
Análisis
5. Comprueba el estado del archivo.
commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7
Author: John Smith
La mayor parte de esto es bastante sencillo, aunque la primera línea requiere una explicación. La cadena de 40 caracteres que aparece detrás de commit
es una suma de comprobación SHA-1 del contenido de la confirmación. Esto tiene dos finalidades. En primer lugar, garantiza la integridad de la confirmación (si se hubiera dañado en algún momento, la confirmación generaría una suma de comprobación distinta). En segundo lugar, actúa como ID exclusivo de la confirmación.
Este ID se puede usar en comandos como git log
para hacer referencia a confirmaciones específicas. Por ejemplo, git log 3157e..5ab91
mostrará todo el contenido entre las confirmaciones con los ID 3157e
y 5ab91
. Además de las sumas de comprobación, los nombres de ramas (que se tratan en el módulo sobre ramas) y la palabra clave HEAD son otros métodos habituales para referirnos a las confirmaciones individuales. HEAD
siempre hace referencia a la confirmación actual, ya sea una rama o una confirmación específica.
El carácter "~" resulta útil para crear referencias relativas a la entidad principal de una confirmación. Por ejemplo, 3157e~1
hace referencia a la confirmación anterior a 3157e
y HEAD~3
es la entidad primaria principal superior de la confirmación actual.
Ejemplo
En la sección Uso se ofrecen numerosos ejemplos de git log
, pero ten en cuenta que se pueden combinar varias opciones en un solo comando:
git log --author="John Smith" -p hello.py
En este ejemplo, se mostrará una comparativa completa de todos los cambios que John Smith ha realizado en el archivo hello.py
.
La sintaxis ".." es una herramienta muy útil para comparar ramas. En el siguiente ejemplo, se muestra una breve descripción de todas las confirmaciones presentes en some-feature
que no lo están en main
(la rama principal).
git log --oneline main..some-feature
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.