git add
Cuando se trabaja en Git u otros sistemas de control de versiones, el concepto de “guardar” es un proceso con más matices que el de guardar en un procesador de texto u otras aplicaciones convencionales de edición de archivos. La expresión tradicional de software de “guardar” equivale al término de Git “confirmar”. Una confirmación es lo mismo que el guardado en Git. El guardado convencional debe considerarse como una operación de un sistema de archivos que se emplea para sobrescribir un archivo existente o escribir uno nuevo. De manera alternativa, la confirmación de Git es una operación que actúa sobre una colección de archivos y directorios.
Para guardar los cambios, en Git y en SVN se sigue un proceso distinto. Las confirmaciones o "registros" de SVN son operaciones que efectúan un envío remoto a un servidor centralizado. Esto significa que las confirmaciones de SVN precisan de acceso a Internet para guardar por completo los cambios de los proyectos. Las confirmaciones de Git pueden capturarse y compilarse de manera local, y después enviarse a un servidor remoto según convenga mediante el comando git push -u origin main
. La diferencia fundamental entre ambos métodos radica en el diseño de las arquitecturas. Git es un modelo de aplicaciones distribuidas, mientras que SVN es un modelo centralizado. Las aplicaciones distribuidas son, por lo general, más robustas, ya que no presentan un solo punto de fallo como, por ejemplo, un servidor centralizado.
Los comandos git add, git status y git commit se usan en combinación para guardar una instantánea del estado actual de un proyecto de Git.
Git tiene un mecanismo de guardado adicional llamado “stash”. El stash es un área de almacenamiento efímera para los cambios que no están listos para confirmarse. El stash actúa en el directorio de trabajo, el primero de los tres árboles, y presenta numerosas opciones de uso. Si quieres más información, visita la página sobre git stash.
Los repositorios de Git se pueden configurar para ignorar archivos o directorios específicos. De este modo, se evitará que Git guarde los cambios en ningún contenido ignorado. Git cuenta con varios métodos de configuración para gestionar la lista de elementos ignorados. Esta configuración de Git se analiza con más detalle en la página sobre git ignore.
git add
El comando git add
añade un cambio del directorio de trabajo en el entorno de ensayo. De este modo, indica a Git que quieres incluir actualizaciones en un archivo concreto en la próxima confirmación. Sin embargo, git add
no afecta al repositorio de manera significativa: en realidad, los cambios no se registran hasta que ejecutas git commit.
Junto con estos comandos, también necesitarás git status para ver el estado del directorio de trabajo y el entorno de ensayo.
Funcionamiento
Los comandos git add
y git commit componen el flujo de trabajo fundamental de Git. Estos son los dos comandos que todos los usuarios de Git deben conocer, con independencia del modelo de colaboración de su equipo. Constituyen el medio para registrar las versiones de un proyecto en el historial del repositorio.
El desarrollo de un proyecto gira en torno al patrón básico de edición/preparación/confirmación. Primero, editas tus archivos en el directorio de trabajo. Cuando lo tienes todo listo para guardar una copia del estado del proyecto, preparas los cambios con git add
. Cuando ya tienes la instantánea preparada a tu gusto, la confirmas en el historial del proyecto con git commit
. El comando git reset sirve para deshacer una confirmación o una instantánea preparada.
Además de git add
y git commit
, hay un tercer comando (git push) que resulta esencial para lograr un flujo de trabajo colaborativo completo de Git. El comando git push
se emplea para enviar los cambios confirmados a repositorios remotos para colaborar. Esto permite a otros miembros del equipo acceder a un conjunto de cambios guardados.
Material relacionado
rama de git
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
El comando git add
no debe confundirse con svn add
, que añade un archivo al repositorio. En su lugar, git add
actúa en el nivel más abstracto de los cambios. Esto significa que git add
debe aplicarse cada vez que se modifica un archivo, mientras que svn add
solo tiene que aplicarse una vez por cada archivo. Puede parecer redundante, pero este flujo de trabajo facilita muchísimo la organización de los proyectos.
Entorno de ensayo
La función principal del comando git add
consiste en pasar los cambios pendientes del directorio de trabajo al área de git staging
. El entorno de ensayo es una de las características más exclusivas de Git, y puede llevar un tiempo entenderlo si vienes de trabajar con SVN (o incluso Mercurial). Viene bien concebirlo como un intermediario entre el directorio de trabajo y el historial del proyecto. Al entorno de ensayo se le considera uno de los "tres árboles" de Git, junto con el directorio de trabajo y el historial de confirmaciones.
En lugar de confirmar todos los cambios realizados desde la última confirmación, el entorno de ensayo te permite agrupar los cambios relacionados en instantáneas con un enfoque muy claro antes de confirmarlos en el historial del proyecto. De este modo, puedes hacer todo tipo de cambios en archivos sin relación, volver atrás y dividirlos en confirmaciones lógicas mediante la adición de cambios relacionados en el entorno de ensayo, y confirmarlos de manera fraccionada. Como en cualquier sistema de control de revisiones, es fundamental crear confirmaciones atómicas para que resulte sencillo localizar los errores y revertir los cambios minimizando el impacto en el resto del proyecto.
Opciones comunes
git add <file>
Prepara todos los cambios de <file>
para la siguiente confirmación.
git add <directory>
Prepara todos los cambios de <directory>
para la siguiente confirmación.
git add -p
Inicia una sesión de entorno de ensayo interactiva que te permite elegir las partes de un archivo que quieres añadir a la siguiente confirmación. Se te presentarán una serie de cambios y se te solicitará un comando. Utiliza y
para preparar el fragmento, n
para ignorarlo, s
para dividirlo en fragmentos más pequeños, e
para editarlo manualmente y q
para salir.
Ejemplos
Al comenzar un nuevo proyecto, git add
desempeña la misma función que svn import
. Para crear una confirmación inicial del directorio actual, usa los dos comandos siguientes:
git add .
git commit
Cuando tengas tu proyecto en marcha, podrás añadir nuevos archivos pasando la ruta a git add
:
git add hello.py
git commit
Los comandos anteriores también pueden usarse para registrar los cambios en los archivos existentes. Una vez más, Git no distingue entre los cambios del entorno de ensayo en los nuevos archivos y los cambios de los archivos que ya se han añadido al repositorio.
Resumen
En la revisión, git add
es el primer comando de una cadena de operaciones que ordena a Git que “guarde” una instantánea del estado del proyecto en ese momento en el historial de confirmaciones. Si se usa por sí solo, git add
pasará los cambios pendientes del directorio de trabajo al entorno de ensayo. El comando git status
se emplea para examinar el estado del repositorio y permite confirmar una promoción de git add. El comando git reset
se utiliza para deshacer una acción de git add. El comando git commit sirve para confirmar una instantánea del directorio del entorno de ensayo en el historial de confirmaciones de los repositorios.
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.