Comparar y contrastar repositorios locales y remotos

Completado

Git es un sistema distribuido donde el código fuente se encuentra en la máquina de cada desarrollador. Esto incluye el historial completo con todas las confirmaciones realizadas en ese proyecto. Se conoce como repositorio local.

Permite al desarrollador trabajar en su propio entorno aislado sin preocuparse de que alguien rompa su código mientras aún está desarrollando una función. También le permite comparar código con versiones anteriores, deshacer código, fusionar código, etc. Incluso puede hacerlo sin una conexión de red.

La mayor parte del trabajo que hará un desarrollador con Git se realizará en un repositorio local. Git admite (y facilita) la ramificación. La ramificación se discutirá en un módulo separado, pero la mayoría de las ramificaciones también se crearán en un repositorio local.

En una fase posterior, debe compartir sus modificaciones o nuevas funciones con el equipo de desarrollo. Por lo tanto, Git usa un repositorio remoto. Un repositorio local también se puede vincular a varios repositorios remotos si es necesario. El repositorio remoto se usa para compartir código fácilmente con otros miembros del equipo, pero también para configurar canalizaciones de compilación. Estas canalizaciones compilan el código que se inserta en el repositorio remoto. Una inserción puede ser el desencadenador para iniciar la canalización.

Repositorio local

En el repositorio local, podemos distinguir tres áreas o directorios diferentes.

  • Directorio de trabajo: se trata de una única desprotección de una versión del código. El directorio de trabajo contendrá el código con el que está trabajando activamente. Puede cambiar los archivos utilizando el comando checkout. Cada vez que cambie la rama de trabajo activa, los archivos del directorio de trabajo cambiarán para parecerse a la versión específica del código. Los archivos que puede ver en el Explorador de Windows son archivos del directorio de trabajo.

  • Área de almacenamiento provisional: esta área se utiliza como un área entre su directorio de trabajo y el directorio de Git. Antes de poder enviar un archivo del directorio de trabajo al directorio de Git, primero debe almacenar provisionalmente ese archivo. El archivo se marca entonces, como está, para la siguiente confirmación. Puede seguir trabajando con el archivo. Todas las modificaciones que realice en ese archivo que no estén almacenadas provisionalmente no se agregarán con la próxima confirmación. Solo se agregará el contenido del archivo que esté almacenado provisionalmente. Esto es útil si está trabajando en una función pero aún no ha terminado por completo. Puede almacenar provisionalmente las modificaciones y continuar trabajando. Si necesita confirmar al final del día, aún puede confirmar una versión de trabajo (la versión del área de almacenamiento provisional), sin el riesgo de confirmar un archivo a medio desarrollar.

  • Directorio de Git: el directorio de Git contiene todos los metadatos y la base de datos de objetos. Cada archivo que envíe al directorio de Git se almacenará dentro de este directorio. Si habilita Elementos ocultos en el Explorador de Windows, verá una carpeta .git oculta. Esta carpeta contiene subcarpetas con los objetos, pero también con información de puntero. Si elimina esta carpeta, su repositorio local de Git desaparecerá. Esto también hace que sea fácil colocar su repositorio local en una unidad USB y llevarlo consigo y usarlo en otros equipos. No manipule este directorio, ya que puede dañar el repositorio local. Este también es el directorio que se utilizará para sincronizar con el repositorio remoto.

Diagrama de flujo de áreas de repositorio local con directorio de trabajo, almacenamiento provisional y repositorio.

Al usar esta configuración, un archivo de Git puede estar en una de tres etapas.

  • No modificado y almacenado en el directorio Git: el archivo está confirmado.

  • Modificado y en el área de almacenamiento provisional: el archivo está en el almacenamiento provisional.

  • Modificado y fuera del área de almacenamiento provisional: el archivo está modificado.

Ciclo de vida del archivo Git

En el siguiente esquema, puede ver el ciclo de vida completo que puede experimentar un archivo. La primera vez que se crea un archivo nuevo o se agrega a una carpeta del Explorador de Windows, el archivo obtendrá el estado sin seguimiento. Este archivo no forma parte del ciclo de vida de Git. Utilice el comando agregar para agregar este archivo al área de almacenamiento provisional, donde se almacenará provisionalmente. Más tarde puede utilizar el comando confirmar para agregar el archivo al directorio Git. Entonces el archivo obtendrá el estado sin modificar. Siempre que edite un archivo, el archivo obtendrá el estado modificado o sin seguimiento cuando quita el archivo del directorio de Git. El comando rm se usa para quitar un archivo. Quitar un archivo del directorio de Git no significa que el archivo también se elimine en el disco. Esta es una acción que, como desarrollador, debe realizar manualmente.

Diagrama del ciclo de vida del archivo Git con áreas sin seguimiento, sin modificar, modificadas y almacenadas provisionalmente.

Repositorio remoto

El repositorio remoto se utiliza a través de los comandos push y pull para su sincronización con el repositorio local. Por lo tanto, incluso cuando está compartiendo código o recibiendo actualizaciones de su equipo, se hace con comandos que actualizan el repositorio local. Debido a que cada repositorio es autónomo, el propietario del repositorio es responsable de mantenerlo actualizado con los cambios de otros.

En el siguiente esquema, puede ver cómo dos desarrolladores pueden usar el repositorio remoto para compartir modificaciones. El desarrollador A está realizando cambios en el repositorio local y utiliza el comando push para cargar modificaciones en el repositorio remoto. El desarrollador B puede utilizar el comando pull para descargar las modificaciones y puede insertar modificaciones.

Diagrama de trabajo con repositorio remoto y con dos desarrolladores.