Práctica 4.2: Git/Github merge
Relación 4.1.2: Integración de ramas - Merge¶
Versión: 30 de septiembre de 2022
Objetivos¶
- Practicar con repositorios locales y remotos
- Crear ramas
- Integrar ramas
- Resolver conflictos
Descripción de la práctica¶
En esta práctica se parte del repositorio creado en la entrega anterior, realizando modificaciones sobre el mismo para comenzar a trabajar con ramas de git. Crearemos una rama nueva con un desarrollo paralelo y la integraremos con la rama main resolviendo cualquier conflicto que haya podido surgir.
Tareas¶
Si ha realizado la entrega anterior, puede saltar directamente al paso 7.
Paso 1: Creación de repositorio remoto¶
El primer paso a seguir es crear una cuenta en Github, si no se tiene. A continuación, creamos un nuevo repositorio con el nombre ID_XXXX_my_calculator.
Paso 2: Creación de repositorio local¶
En un terminal de nuestro ordenador iniciamos un repositorio local de git. Si se tiene el sistema operativo Windows, se recomienda emplear Git Bash como terminal.
y le asignamos el repositorio remoto que acabamos de crearPaso 3: Añadir ficheros al repositorio¶
Añadir al directorio de trabajo un fichero con el nombre "index.html". Este fichero contendrá una calculadora web con un botón para calcular el cubo del número introducido:
<!DOCTYPE html>
<html>
<head>
<title>Calculator</title>
<meta charset="utf-8">
</head>
<body>
<h1>Calculadora de ……su nombre y apellidos……</h1>
Number:
<input type="text" id="n1">
<p>
<button onclick="cube()"> x^3 </button>
</p>
<script type="text/javascript">
function cube() {
var num = document.getElementById("n1");
num.value = Math.pow(num.value, 3);
}
</script>
</body>
</html>
Paso 4: Registrar cambios¶
A continuación, hay que registrar los ficheros en el índice y crear el primer commit en la rama main. Se recuerda que antes de crear un commit hay que probar siempre que el programa que se va a guardar funciona correctamente (en este caso, abriéndolo en el navegador web y probando que funciona la calculadora).
$ git add index.html # Añadir el fichero creado
$ git commit -m "x^3 button" # Congelar los cambios en un commit
$ git log --oneline # Ver la lista de commits
Paso 5: Crear un segundo commit¶
Debe crear un segundo commit en la rama en la que está trabajando (main).
El commit debe añadir a la calculadora (fichero index.html) un segundo botón (elemento HTML <button ..>
) que eleve un número a la cuarta potencia (x^4) invocando una función (power_4 ()) que calcula x^4 al hacer click en él.
<!DOCTYPE html>
<html>
<head>
<title>Calculator</title>
<meta charset="utf-8">
</head>
<body>
<h1>Calculadora de ……su nombre y apellidos……</h1>
Number:
<input type="text" id="n1">
<p>
<button onclick="cube()"> x^3 </button>
<button onclick="power_4()"> x^4</button>
</p>
<script type="text/javascript">
function cube() {
var num = document.getElementById("n1");
num.value = Math.pow(num.value, 3);
}
function power_4() {
var num = document.getElementById("n1");
num.value = Math.pow(num.value, 4);
}
</script>
</body>
</html>
Una vez añadido el código del nuevo nuevo botón a la calculadora y después de probar que funciona correctamente, registrar los cambios en el índice y crear el nuevo commit.
Paso 6: Subir el repositorio a Github¶
Para finalizar, hay que subir el repositorio local al repositorio remoto creado en Github inicialmente.
Paso 7: Crear nueva rama¶
Imaginemos que un miembro de nuestro equipo comenzase el desarrollo de una nueva funcionalidad partiendo de la versión inicial (sin el botón x^4). Para ello, creamos una rama de nombre "sine" que salga del primer commit (con mensaje "x^3 button") y nos movemos a la rama "sine" en el directorio de trabajo, para poder trabajar sobre ella. Primero tenemos que averiguar cual es el id del commit de nombre "x^3 button" y después crear la rama nueva a partir de él.
$ git log --oneline # Ver la lista de commits (incluye <commit_id>, p.e. 71e69ce)
$ git checkout -b sine <commit_id> # Crea rama en commit y realiza checkout a rama
Paso 8: Crear nuevo commit¶
Crear un nuevo commit en la rama sine que añada un segundo botón sin(x) a la calculadora en el fichero index.html (además del botón x^3 que ya existe). El nuevo botón debe calcular el seno de un número utilizando la función JavaScript: Math.sin(x).
<!DOCTYPE html>
<html>
<head>
<title>Calculator</title>
<meta charset="utf-8">
</head>
<body>
<h1>Calculadora de ……su nombre y apellidos……</h1>
Number:
<input type="text" id="n1">
<p>
<button onclick="cube()"> x^3 </button>
<button onclick="sine()"> sin </button>
</p>
<script type="text/javascript">
function cube() {
var num = document.getElementById("n1");
num.value = Math.pow(num.value, 3);
}
function sine() {
var num = document.getElementById("n1");
num.value = Math.sin(num.value);
}
</script>
</body>
</html>
Estando en la rama sine, se añade el código del nuevo nuevo botón a la calculadora y una vez comprobado que funciona correctamente, registrar los cambios en el índice y crear el nuevo commit con el nombre "sin(x) button".
Paso 9: Integrar la rama "main" en "sine"¶
Ahora se debe integrar la rama "main" en la rama "sine", para crear una calculadora con tres botones: x^3, x^4 y sin(x).
La integración tiene conflictos, que se deben resolver con el editor. Una vez resueltos y después de comprobar que el programa integrado funciona correctamente, se debe finalizar la integración (merge) creando el commit de integración.
Paso 10: Integrar la rama "sine" en "main"¶
Ahora que la rama "sine" está correcta y contiene todas las funcionalidades, podemos integrar los cambios en la rama principal "main", Para ello, nos cambiamos a la rama "main"
y nos traemos los cambios de "sine".
Si queremos podemos ver la historia de integraciones de todas las ramas:
Paso 11: Subir todas las ramas del repositorio local al nuevo repositorio en GitHub.¶
Por último, subimos los cambios realizados en ambas ramas a Github
La opción --force o -f permite subir un repositorio incompatible, pero ¡Cuidado borra el existente! Se debe utilizar solo en casos en que no hay otra solución.
Si accedemos al repositorio creado en Github podemos ver que están ambas ramas con el contenido que hemos subido.
Entrega¶
- Añade la URL del repositorio a la tarea.
- Recuerda que el repositorio tiene que ser publico.
-
El nombre del repositorio sera: ID_XXXX_my_calculator donde
- ID es el identificador de la tarea
- XXXX tus iniciales
-
Asegurate que funciona y:
- 10%: Existe el repositorio my_calculator con el contenido pedido en la entrega anterior (hasta el paso 7)
- 40%: Existe la rama sine con el commit “sin(x) button” con el contenido y origen pedidos
- 50%: La integración de las ramas main y sine se ha realizado correctamente y la calculadora funciona bien
Apoyo¶
- https://revilofe.github.io
Fuente¶
Juan Quemada, DIT - UPM