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 master. 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.

git add

Funcionamiento

Tutorial de Git: instantánea de git add

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

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

¿Quieres aprender a usar Git?

Prueba este tutorial interactivo.

Comienza ahora