Dominio de Git: Entendiendo las ramas remotas y de seguimiento
13:38, 04.12.2023
Exploración de sucursales remotas
Las ramas Git son partes aisladas y seguras de los desarrollos que están separadas del proyecto principal. Las ramas se utilizan para corregir errores, crear nuevas funciones, probar ideas y minimizar los riesgos de arruinar el código existente del programa.
Las ramas remotas ayudan a los usuarios de un proyecto específico a colaborar. Estas ramas se alojan en GitHub, que suele denominarse repositorio de origen. Cuando el usuario ha hecho algunos cambios locales, es posible empujar esta rama local creada al repositorio de origen o remoto. Al hacer esto, se permite que otros usuarios tengan acceso a este código específico.
Así, las ramas remotas son copias de las ramas locales en los repositorios remotos.
Creación de un nuevo repositorio local
Para una comprensión práctica de cómo funciona realmente todo, vamos a crear un repositorio local. Para ello, comienza con la creación de un nuevo directorio e inserta varios archivos en él, después de eso ejecuta $ git init. Al hacer esto, ahora puedes encontrar estos archivos específicos como no rastreados, para comprobar que puedes ejecutar un comando - $ git status. Para añadir cualquier otro archivo, puedes escribir - $ git commit -m. El repositorio local con un par de archivos ha sido creado con éxito, así que vamos a proceder al repositorio remoto.
Cómo iniciar un nuevo repositorio remoto
Para la creación del repositorio remoto, primero debe elegir un servicio necesario. Las opciones más populares son Bitbucket y GitHub. Una vez que haya elegido un servicio y configurado todo, puede continuar con los siguientes pasos.
Carga de cambios en un repositorio remoto
Una vez configurado el repositorio remoto, deberá insertar una referencia al mismo en el repositorio local. Para ello, tendrá que escribir:
$ git remote add something [remote-url]
Como ve, hemos llamado a este repositorio remoto something, pero puede ser cualquier otra palabra que le guste. Para comprobar si todo se ha conectado correctamente, utiliza el comando
$ git remote
Para obtener información más detallada sobre el repositorio remoto, tendrá que añadir -v al comando mencionado anteriormente.
El siguiente paso es hacer push al repositorio remoto, mediante el siguiente comando:
$ git push something master
Escribiendo este comando, se crea una rama maestra en el repositorio remoto y se crea la referencia en el repositorio local. Si está empujando a un repositorio remoto, pero no ha creado una rama, se hará automáticamente. El nombre generado automáticamente contiene la siguiente información remotes/remote-name/branch-name, en nuestra situación es remotes/something/master.
Verificación de las sucursales remotas
Para verificar todas las ramas remotas, puede ejecutar $ git branch -r. Para revisar todas las ramas existentes, incluyendo la local y la remota, debe ejecutar:
$ git branch -a
Cuando se revisa por primera vez, normalmente, la rama maestra y la rama remota inicial serán idénticas. Sin embargo, cuando se añadan otros usuarios al proyecto, esta rama también se actualizará en algún momento.
Transición a sucursales remotas
La transición a las ramas remotas es fácil, sólo tiene que escribir:
$ git checkout origin/master
Como ve, no es necesario insertar remotas en esta línea. La conveniencia es que se trata de una operación local, que es posible gracias a la copia exacta de la rama maestra remota.
Mantenga al día sus sucursales remotas
Para enviar las modificaciones locales al repositorio remoto, escriba el siguiente comando:
$ git push
Es muy recomendable empezar con $ git fetch antes de ejecutar este comando push. No hay necesidad de empezar con fetch, en caso de que hayas creado una nueva rama. Debido a que esta rama no estaba en el repositorio remoto, no hay nada de lo que hacer fetch.
Para la sincronización, debe escribir el siguiente comando:
$ git fetch [remote-name]
Esta sincronización funciona copiando todas las ramas remotas en el repositorio local. Si dichas ramas están en el repositorio local, entonces serán actualizadas.
La necesidad de ejecutar "Fetch" antes de "Push"
'Fetch' debe hacerse antes de empujar nuevos cambios en el repositorio remoto. Esto es algo realmente importante a tener en cuenta antes de cualquier ajuste que esté planeando. Si otro usuario ha empujado algo al repositorio remoto, es necesario 'fetch' los cambios y luego 'fusionar' estas modificaciones en ramas locales. Sólo después de eso, puede empezar a 'empujar' sus modificaciones. Los usuarios no pueden prácticamente empujar nada a menos que la rama local esté actualizada.
El proceso de búsqueda es igualmente necesario para la rama maestra como para cualquier otra rama. Recuerde, en caso de que usted no está planeando hacer un cambio específico en una rama, entonces usted no puede actualizarlo. Estas actualizaciones son importantes sólo si está iniciando cambios.
Simular la contribución de un miembro del equipo
Para simular un nuevo miembro en el proyecto, en primer lugar debe crear una nueva carpeta en el sistema. No debe formar parte de este repositorio ni de su subcarpeta. Después clone el repositorio, con el siguiente comando:
$ git clone [remote-url]
Se necesitan un par de pasos más, tales como apuntar a un nuevo repositorio, confirmar, y empujar con la siguiente línea de comandos:
$ git add
$ git commit -m
$ git push something master
Establecimiento de sucursales de seguimiento
Las ramas de seguimiento son tipos de ramas locales que están directamente conectadas con las remotas. La utilidad de estas ramas de seguimiento radica en que detectan automáticamente la rama y el servidor que deben utilizarse para el envío.
Este tipo de rama es como las demás, pero incluye datos de seguimiento específicos.
El escenario habitual de git push es el siguiente: $ git push something master. Esto significa que el repo remoto que se llama algo y el brunch que se llama master están recibiendo una actualización. En caso de que dicha rama ya haya sido creada en el repo remoto, todo funciona a la perfección, pero en caso contrario, se cae. Para hacer este proceso más simple podemos utilizar ramas de seguimiento.
Creación de nuevas ramas de seguimiento
Para ilustrar cómo es todo el proceso de creación de la rama de seguimiento, vamos a hacerla a partir de la rama maestra local. El siguiente comando se utiliza para hacer esta rama - rastreo de la rama maestra remota:
$ git push -u something master
Como puede ver, es realmente fácil y no hay pasos difíciles en la gestión de este proceso. En caso de que no estés haciendo ninguna modificación local y empujándolas, Git le devolverá el mensaje de que todo es rastreado desde la fuente original.
Una vez que haya ejecutado ese comando, el proceso es mucho más fácil. Sólo hay que imprimir $ git push o pull y hacer lo que se quiera sin necesidad de añadir un nombre de rama y un nombre remoto cada vez que se quiera tirar o empujar algo. La línea de comandos para pull tiene el mismo aspecto:
$ git pull
La creación de una nueva rama también es muy simple, sólo tiene que añadir -u a la línea, y se ve así:
$ git push -u remote-name branch-name
No es necesario hacerlo durante el envío inicial al repositorio remoto. Puede realizar este ajuste siempre que sea necesario.
Ventajas adicionales de utilizar ramas de seguimiento
Las ramas de seguimiento son bastante útiles para empujar y tirar en una versión más corta. Además de esto, los usuarios también pueden determinar fácilmente si están por detrás o por delante en comparación con la rama remota. Para comprobar esta información, debe utilizar el siguiente comando:
$ git status
Si tiene una rama normal, la información sobre la actualización no será accesible tan rápidamente. Con la rama de seguimiento, obtendrá una salida de inmediato. Así que usted puede determinar si hay una necesidad de tirar algunos cambios nuevos o empujar sus modificaciones en el proyecto.
Si ha utilizado ese comando y ver la salida - rama está al día, usted tendrá que hacer un paso más. Hay un truco aquí, en caso de que otro usuario actualice el repositorio remoto, usted seguirá recibiendo una notificación de que todo está actualizado. Esto ocurre porque el sistema comprueba la rama remota local, pero no el repositorio remoto. Para obtener un resultado válido, tendrá que utilizar el comando fetch y luego el comando status una vez más. Como puede ver aquí, la rama está atrasada.
Obtención automática de una rama de seguimiento al clonar
La clonación viene con un montón de características automáticas y sin necesidad de hacer un montón de ajustes. Cuando un usuario está clonando un repositorio, las ramas remotas se crean en el nuevo repositorio de forma idéntica a como están en el repositorio remoto. Además, se crea la rama maestra por defecto.
Excepto por esto, un repositorio clonado también obtiene una configuración de la rama local para rastrear la rama remota. Esto es realmente conveniente y algunos usuarios ni siquiera notan estas características. Ellos sólo utilizan las ramas de seguimiento y no se preocupan por su creación o lo que sea.
Por supuesto, hay un montón de escenarios automáticos y eso es fantástico, pero ¿qué pasa con otras cosas que no se generan por defecto? Vamos a crear un problema real que puede ocurrir con cualquier nuevo usuario y tratar de resolverlo de la manera más eficaz.
Por ejemplo, un miembro del equipo ha clonado un repositorio con algunas ramas. El problema aquí es que el sistema crea automáticamente sólo ramas remotas y ramas maestras locales. Otras ramas locales deben ser creadas por el usuario de forma independiente, así que ¿cómo hacerlo? Cuando un usuario necesita acceso local a una rama específica, debería clonarla desde una rama remota a una local. Otra cosa importante es añadir un mecanismo de seguimiento a esta rama clonada. Eso suena como 2 tareas difíciles, pero en realidad, es sólo una línea que es:
$ git checkout -b [local-branch-name] [remote-name/branch-name]
En la salida, verá la notificación de que una rama elegida está configurada para realizar un seguimiento de la rama remota.
Reflexiones finales sobre el dominio de Git
Ahora usted tiene una comprensión básica de las ramas remotas y de seguimiento y cómo iniciar un repositorio local, un par de comandos útiles como pull, push, clone, fetch, y un par de otros. Toda esta información puede ser un poco confusa para los nuevos usuarios y eso es obvio. Cualquier implementación de una nueva tecnología no es algo fácil de dominar que requiere no sólo conocimientos básicos sino una enorme práctica. Sólo en la práctica, usted puede llegar a ser más experimentado con Git y una enorme lista de los comandos que usted encontrará. Una gran recomendación para cualquier recién llegado es practicar con comandos, ramas, crear un par de repositorios y todo será más comprensible.
Git no se trata sólo de seguir comandos y aprender constantemente, sino más bien de explorar y probar las mejores estrategias para un proyecto específico. Cuantos más experimentos hagas, más fácil te resultará a la larga. ¡No pierda su tiempo y comience pequeños proyectos ahora mismo!
FAQ
¿Qué es el concepto de seguimiento de relaciones en Git?
Las relaciones de seguimiento o ramas de seguimiento se crean como un gran concepto para la automatización de varios procesos en Git. Esta rama de seguimiento conecta la local con la remota para que sea más fácil hacer push/pull. La rama de seguimiento sabe automáticamente qué rama y servidor elegir para hacer push y pull y no necesitas escribirlo todo manualmente.
¿Qué importancia tiene establecer relaciones de seguimiento?
La importancia de este proceso de seguimiento radica en la automatización y simplificación de varios procesos importantes en Git. Ahora los usuarios no deben añadir información sobre un servidor y una rama específica cada vez que hacen un push o un pull. Con un solo comando, se puede simplificar este proceso y excluir la información adicional del siguiente proceso.
¿Cuál es el procedimiento para supervisar una sucursal remota?
El procedimiento de seguimiento de una rama remota es importante para colaborar con los usuarios de un mismo proyecto. Herramientas como Git se crearon inicialmente para establecer una buena colaboración y ayudar a los programadores a realizar un seguimiento de todos los cambios disponibles dentro del proyecto. Todas las diferentes características y versiones se pueden monitorizar fácilmente sólo con un par de comandos que debe conocer. Por ejemplo, para crear/borrar/listar ramas se puede utilizar el siguiente comando - git branch. Git fetch se aplica para obtener referencias del repositorio remoto y guardarlas en el local. Otro comando útil para moverse entre las características de un repositorio es git checkout.