Clonar una Rama en Git: Un Tutorial Paso a Paso

Imagina que estás escribiendo un libro y quieres experimentar con nuevas ideas sin desordenar el original. Podrías comenzar un nuevo cuaderno para cada idea, manteniendo tus borradores separados.

Git, un sistema de control de versiones, permite a los desarrolladores de software hacer lo mismo con el código a través de “ramas”. Cada rama es como un camino de desarrollo separado, lo que te permite explorar cambios sin afectar la base de código principal.

En este artículo, te guiaré a través del uso de git clone, enfocándome en clonar ramas específicas. Si quieres aprender más sobre Git, te recomiendo este curso de Introducción a Git.

Comencemos con una respuesta corta para aquellos que tienen prisa. Después de eso, profundizaremos en más detalles.

Respuesta Corta: Cómo Clonar una Rama Específica

Para clonar una rama específica de un repositorio git, usa el comando:

git clone --single-branch --branch <branch_name> <repository_url>

Reemplaza <branch_name> con el nombre de la rama deseada y <repository_url> con la URL del repositorio. Este comando crea una copia local de la rama especificada, permitiendo un desarrollo inmediato y enfocado en esa rama.

Ejemplo

A lo largo de este artículo, utilizaremos este repositorio. Puedes usarlo para probar los comandos que aprendes en tu máquina. El repositorio contiene tres ramas:

  1. main: La rama predeterminada con dos archivos de texto.
  2. add-new-file: Una rama donde se ha añadido un tercer archivo.
  3. modify-file: Una rama donde se ha modificado el segundo archivo.

Así es cómo podemos clonar la rama add-new-file:

git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git

¿Qué es git clone?

Por defecto, git clone está diseñado para copiar todo el repositorio en un nuevo directorio de su máquina local, clonando todas las ramas. Aquí tiene la sintaxis:

git clone <repository_url>

Para clonar el repositorio de ejemplo, podemos hacer lo siguiente:

git clone https://github.com/fran-aubry/git-clone-example.git

Después de ejecutar este comando, todas las ramas se copiarán en tu máquina local. Sin embargo, solo los archivos de una rama son visibles a la vez, llamada la rama checada. Después de clonar un repositorio, la rama predeterminada (generalmente llamada main o master) es la que está checada.

Cambiar ramas

Después de una clonación completa, podemos cambiar (revisar) a la rama deseada utilizando el git checkout comando. Por ejemplo, para revisar la rama modify-file, se haría lo siguiente:

git checkout modify-file

Profundidad del clon

Cuando se trabaja con git, los cambios en un branch se guardan mediante el comando git commit . Cada commit crea un nuevo estado de ese branch, que posteriormente puede revertirse si es necesario. Piensa en cada commit como en la creación de una instantánea, con git manteniendo un seguimiento de todas esas instantáneas. Puede revertir un branch a cualquiera de estas instantáneas en cualquier momento.

El comando git clone, cuando se utiliza sin opciones, descarga todos los commits de cada rama en su máquina local. Dependiendo del tamaño del proyecto, esto podría ocupar una cantidad significativa de espacio en su almacenamiento local. Si sabe que no necesitará toda la historia, puede usar el parámetro --depth para especificar cuántos commits (o instantáneas) desea clonar.

Para clonar la rama principal cargando solo el último commit, use el siguiente comando:

git clone --depth=1 https://github.com/fran-aubry/git-clone-example.git

Clonar una rama específica

Aprendimos cómo clonar un repositorio usando git clone. De forma predeterminada, este comando clona todo a tu máquina local. A menudo, quizás sólo estés interesado en trabajar en una rama específica, de modo que sería más eficiente clonar solo esa rama particular. Esta técnica ahorra espacio en disco y te permite comenzar a trabajar inmediatamente sin necesidad de cambiar de rama después de clonar.

En la analogía de la escritura de libros, considere que te han asignado el trabajo de reescribir el segundo capítulo de un libro. En este caso, debes clonar solo la rama donde se está llevando a cabo esta tarea, ya que no es necesario tener acceso a las ramas relacionadas con la revisión de otros capítulos.

Puede instruir a git para clonar una sola rama agregando los argumentos --single-branch y --branch seguidos del nombre de la rama:

git clone --single-branch --branch <branch_name> <repository_url>

Vamos a desglosar la orden:

  • git clone: Esta es la orden básica de git utilizada para copiar un repositorio de una fuente remota a su máquina local.
  • --single-branch: Esta opción le dice a Git que clonar sólo una sola rama. Si no se especifica ninguna rama, se clonará la rama por defecto.
  • --branch : Esta opción especifica la rama a clonar. El > es el nombre de la rama que desea clonar.
  • : Esta es la URL del repositorio.

 Por ejemplo, para clonar solo la rama modify-file de nuestro repositorio, podemos hacer lo siguiente:

git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git

Cómo trabajar con una rama clonada

Cuando se trabaja en una rama, hay tres operaciones esenciales que necesita realizar:

  1. Guardar su trabajo actual creando una instantánea del estado actual.
  2. Subiendo sus cambios para que todos los demás puedan acceder a ellos.
  3. Descargando los cambios de otras personas y fusionándolos con los suyos.

Guardar sus cambios con git commit

En Git, guardar su trabajo se denomina crear un commit. Este proceso toma una instantánea del estado actual del ramal en el que está trabajando.

El estado del ramal se guarda en su máquina local después de cada commit, lo que le permite navegar entre las diferentes etapas del progreso.

Para commitear tus cambios en git, utilizas el comando git commit. Sin embargo, antes de commitear tus cambios, git necesita saber qué archivos deseas incluir en el commit. Especificas los archivos a guardar utilizando el comando git add. La sintaxis de este comando es la siguiente:

git add <path_to_file>

En la sintaxis, <path_to_file> es la ruta al archivo que deseas commitear. Por ejemplo, si estamos en el branch modify-file de nuestro repositorio de ejemplo y hemos añadido un párrafo a file2.txt, agregarías ese archivo ejecutando:

git add file2.txt

Después de agregar todos los archivos que desea incluir en su commit, puede proceder a realizar el commit ejecutando:

git commit -m <message>

En este caso, el argumento <message> debe ser un mensaje conciso entre comillas dobles, que brevemente describa los cambios. Por ejemplo:

git commit -m "Add paragraph"

Aquí están algunas convenciones para el mensaje de commit. Son esenciales para asegurar claridad y entendimiento entre todos los que trabajan en el proyecto:

  • Usar el modo imperativo: Comience su mensaje de commit con un verbo en el modo imperativo (por ejemplo, “Agregar,” “Arreglar,” “Actualizar”). Por ejemplo, en lugar de “Agregada nueva funcionalidad,” escriba “Agregue nueva funcionalidad.”
  • Seguir con precisión pero descriptivo: Buscar un mensaje breve, idealmente inferior a 50 caracteres. Sin embargo, priorizar la claridad al describir los cambios. En lugar de “Cambió cosas,” escribir “Actualizar estilo de la barra de navegación.”
  • Evitar mensajes genéricos: Evitar mensajes vagos como “Fix bugs” o “Make improvements.” En su lugar, ser específico: “Fix bug in login form validation” o “Improve readability of documentation.”

Subiendo tus cambios con git push

Cuando realizas un commit, creas una instantánea de los cambios en tu máquina local. Para que otros accedan a tus cambios, necesitas subirlos. Para ello, utilizas la orden push.

La sintaxis básica de la orden push en Git es:

git push <remote> <branch>

Vamos a desglosarla:

  • <remoto>: Este es el nombre del repositorio remoto donde desea enviar sus cambios. Por defecto, cuando clona un repositorio, el repositorio remoto se denomina origen.
  • <rama>: Este es el nombre de la rama cuyos cambios desea enviar al repositorio remoto. Si omite este argumento, Git enviará cambios basándonos en la rama actual y las configuraciones de seguimiento remoto.

Aquí están algunos casos de uso comunes para git push:

  • Enviando cambios de la rama actual: git push
  • Pushing the changes from a specific branch: git push origin <branch>

Descargando cambios con git pull

Git permite a grandes equipos trabajar concurrentemente en el mismo proyecto. Cuando colegas editan la misma rama que estás trabajando, tu rama local puede quedar desactualizada en comparación con la rama remota.

Para descargar los commits de otras personas, utilizamos la orden git pull . La sintaxis básica de la orden push en git es:

git pull <remote> <branch>

Este es lo que cada parámetro hace:

  • <remoto>: Este es el nombre del repositorio remoto del que desea extraer. Por defecto, este repositorio se denomina origin.
  • <rama>: Esta es la rama del nombre de la que desea extraer cambios. Si no se especifica, git utiliza la rama actual junto con su rama ascendente.

Aquí están algunos casos de uso comunes de git pull:

  • Extracción de cambios desde la rama actual: git pull
  • Extrayendo los cambios de una rama específica: git pull origin <rama>

Flujo de trabajo de commit-pull-push

Cuando se utiliza Git, recomiendo que se hagan pull requests frecuentes para asegurar que su rama local permanezca actualizada. Sigo recomendando el adherencia a las siguientes mejores prácticas:

  • Antes de comenzar tu trabajo, haz un pull request para la actualización más reciente de tu rama actual, para asegurarte de que estás trabajando en la versión más reciente.
  • Comitea a menudo, asegurándote de que cada comité se enfoque en pequeños cambios relacionados lógicamente.
  • Después de hacer algunos cambios y crear un comité, haz otro pull request para actualizar tu rama, en caso de que alguien más haya hecho actualizaciones simultáneas.
  • Finalmente, publique sus cambios en el repositorio remoto.

Conflitos en Git

Cuando se ejecuta la orden git pull para descargar cambios de un repositorio remoto, es posible encontrarse con un escenario en el que otro commit ha modificado las mismas líneas que sus commits locales. Git intenta fusionar automáticamente los cambios y en muchos casos, tiene éxito. Por ejemplo, si se realizan cambios a diferentes partes del mismo archivo, Git puede fusionar estos cambios sin problemas porque los commits afectan a secciones distintas.

Sin embargo, si tú y otro colaborador han editado el mismo párrafo, git no podrá determinar qué versión mantener, resultando en un conflicto de fusion. En esta situación, tendrás que resolver manualmente el conflicto decidiendo qué cambios conservar.

Para obtener más orientación sobre la resolución de conflictos, recomiento leer este artículo sobre cómo resolver conflictos de fusion en Git.

Descarga de GitHub

En ciertos escenarios, desea una copia local de un repositorio para utilizarlo sin la intención de modificarlo. Si es un repositorio público, no es necesario instalar Git en su máquina local. Puede descargar directamente el repositorio de GitHub haciendo clic en elCódigobotón y luego en elDescargar Zipbotón, como se muestra a continuación:

Conclusión

La clonación de Git permite copiar un repositorio de Git a su máquina local, lo que le permite utilizar el código o ampliarlo agregando nuevas funciones. Al clonar un repositorio, se descargan todas las ramas, lo que puede consumir una cantidad considerable de espacio en disco.

Se utilizan las ramas para trabajar en cambios o características específicas. Clonar una rama específica le permite contribuir a esos cambios sin descargar trabajos no relacionados, reduciendo así mucho menos el espacio en disco y manteniendo su disco local más limpio.

Si quiere aprender más sobre el tema, recomiendo este Tutorial de GitHub y Git para Principiantes.

Source:
https://www.datacamp.com/tutorial/git-clone-branch-tutorial