CodeGym /Curso de Java /Frontend SELF ES /Trabajando con ramas git en IntelliJ IDEA

Trabajando con ramas git en IntelliJ IDEA

Frontend SELF ES
Nivel 20 , Lección 3
Disponible

11.1 Ramas en git

Trabajar con ramas (branches) en Git es uno de los aspectos clave de la gestión de versiones, que te permite llevar varias líneas de desarrollo en paralelo dentro de un mismo repositorio. Ramificar hace de Git una herramienta poderosa para la colaboración, experimentación y gestión de diferentes versiones de un proyecto.

Ramas en git

Puedes pensar en las ramas de git como carpetas donde git copia tu proyecto. Tienes la carpeta principal de tu proyecto en tu repositorio localmaster, y git puede crear copias de esa carpeta para que pruebes algo sin arruinar el código principal que funciona bien. Esas carpetas-copia se llaman ramas — branches.

Las ramas son alternativas al código. Supongamos que quieres modificar algo en un gran proyecto, llevar a cabo un experimento del que no estás completamente seguro. ¿Cómo lo harías sin git?

Podrías copiar el proyecto en una nueva carpeta y tratar de cambiar todo allí. Si el resultado te gusta, puedes copiarlo a la carpeta principal. Si no te gusta — olvídalo o elimínalo completamente.

O tomemos un ejemplo de la vida real. Digamos, escribir un libro:

  1. Tienes el manuscrito (rama principal).
  2. Quieres intentar cambiar el final (creación de una nueva rama).
  3. Escribes el nuevo final en un documento separado (trabajo en la nueva rama).
  4. Si el nuevo final es mejor, sustituyes el viejo en el manuscrito (fusiones de ramas).
  5. Eliminas el documento separado con el nuevo final (eliminación de rama).

11.2 Creación de ramas

Crear una rama en IntelliJ IDEA es muy fácil:

Creación de ramas

Introduce el nombre de la rama:

Creación de ramas

Intellij IDEA mostrará inmediatamente el nombre de tu rama actual en la parte superior del menú:

Creación de ramas

¿Qué había allí antes?

Allí estaba el nombre de tu primera y principal rama — master.

Ahora se muestra test, lo que significa que Git (bajo la dirección de IntelliJ IDEA) no solo ha creado una nueva rama, sino que también se ha cambiado a ella de inmediato.

Vamos a añadir algún código en el archivo main.html en la rama actual (test) y hacer commit:

Creación de ramas

11.3 Cambiando entre ramas

Paso 1. Elegir la rama.

Ahora vamos a cambiar a nuestra vieja rama. Hacemos clic en el menú superior, y ¿qué vemos ahí?

Cambiando entre ramas

No te asustes — todo es simple aquí:

Local — es la lista de ramas de tu repositorio git local. Hay dos:

  • test
  • master

Remote — es tu repositorio remoto, que está en el servidor de GitHub. Subimos tus cambios allí, pero no hay una nueva rama, lo cual es lógico. El repositorio remoto se llama origin, y solo tiene la rama master.

Recent — es solo una lista de los nombres de las últimas ramas con las que has trabajado: este elemento lo agrega IntelliJ IDEA para comodidad y rapidez.

El nombre origin/master a la derecha del nombre del repositorio local — es el nombre del repositorio remoto con el que está sincronizado actualmente, y donde se subirán los cambios.

Paso 2. Descargar el código de la rama en la carpeta actual.

Cambiando entre ramas

Paso 3. Comprobar.

Veo que la rama «master» y el código antiguo se muestran:

Verificar

11.4 Fusionar ramas

Ahora intentemos fusionar el código de nuestras dos ramas.

Paso 1. Para empezar, añadamos otro archivo a nuestro proyecto — index.html y escribamos algún código en él:

  • Crear el archivo index.html
  • Escribir el código <h1>Hello</h1>
  • Hacer commit del archivo

Así es como se ven mis dos archivos en la rama master:

Fusionar ramas

Paso 2. Fusionar ramas.

Vamos a fusionar en nuestra rama actual (master) los cambios realizados en la rama test.

Para esto, también usaremos el menú superior y el comando «Merge ‘test’ into ‘master’»:

Fusionar ramas

Paso 3. Verificar el resultado.

Fusionar ramas

Verificar:

  • La rama master todavía se muestra arriba
  • Tenemos 2 archivos: index.html y main.html
  • El archivo main.html contiene el código añadido en la rama test

11.5 Conflictos al fusionar

A veces, al fusionar ramas, ocurren conflictos.

Si haces cambios en un archivo en diferentes ramas e intentas fusionarlos, puede surgir un conflicto.

Conflicto de archivos de texto

Git es un sistema muy inteligente — entiende los tipos de archivos. Si haces cambios en diferentes lugares de archivos que considera textuales, simplemente trasladará los cambios de un archivo a otro en el lugar correcto (como lo haría una persona).

Conflicto de archivos binarios

Pero si modificas una imagen o documento, Git no intentará combinarlos en uno: simplemente te pedirá que elijas qué versión del archivo deseas conservar en la rama actual.

Resolución manual de conflictos

Si haces cambios en el mismo lugar de un archivo de texto, Git no podrá fusionar correctamente las versiones y te pedirá que lo hagas:

Conflictos al fusionar

Así es como puede verse:

Conflictos al fusionar

¿Qué ves aquí?

  • A la izquierda — contenido del archivo main.html de la rama master
  • A la derecha — contenido del archivo main.html de la rama test
  • En el medio, IntelliJ IDEA te sugiere escribir la versión final del código (puedes hacer clic en los botones «>>» y «<<» para insertar cambios automáticamente desde algún archivo)

Acepté la opción master y añadí el código manualmente. Así es como quedó:

Conflictos al fusionar

11.6 Historia de cambios

Algo más útil e interesante. Puedes ver la historia de cambios de cualquier archivo, haciendo clic en el botón Show History. Hay dos lugares donde puede encontrarse. Encuéntralos.

Así es como luce la historia de cambios para mí en el archivo main.html:

Conflictos al fusionar

Explicaciones:

  • A la izquierda ves la historia de cambios de un archivo en particular:
    • Cuanto más reciente es el cambio, más arriba está; cuanto más antiguo, más abajo
    • También muestra la historia de la fusión de ramas
  • A la derecha — los cambios que se hicieron en un commit específico
1
Опрос
Elementos decorativos,  20 уровень,  3 лекция
недоступен
Elementos decorativos
Elementos decorativos
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION