Python y JS 2021 - Clase 5 - Control de Versiones - Le9xr8sw
Python y JS 2021 - Clase 5 - Control de Versiones - Le9xr8sw
➢ Durante el despliegue y el
mantenimiento esto se hace
frecuentemente
Trabajo en Conjunto
• Todos los miembros del equipo
trabajan en el mismo código y
desarrollan sus respectivas partes
• Un ingeniero puede ser responsable
de toda una clase.
• O solo algunos métodos dentro de
una clase en particular
Archivos Compartidos
Los archivos compartidos se pueden
guardar en algún tipo de repositorio donde
varias personas pueden acceder a ellos y
trabajar en ellos.
Harry no puede
Escribir sus cambios
Las versiones conflictivas se fusionan (merge)
Harry compara la ultima version con la Se crea una nueva y fusionada version
suya
1. Inicialmente, los repositorios de ambos 2. Ambos usuarios editan el mismo archivo y sus
usuarios se sincronizan con el maestro repositorios locales reflejan sus cambios.
remoto; Todos los archivos son idénticos.
Control de Versiones Distribuida – Parte 2
GitLab nos permite hostear nuestro código, para ello tenemos que:
- Crearnos una cuenta en GitLab
- Crear un proyecto haciendo click en el botón azul New Project (Nuevo Proyecto).
- Crear un proyecto en blanco (Blank Project)
- Completar el campo de nombre, url que tendrá nuestro proyecto, generalmente usuario o grupo
seguido de un slug (apodo para el proyecto que sea breve y conciso) y la visibilidad como Privada.
- ¡Listo! Ahora debemos crear un respositorio para nuestro proyecto.
GitLab
✓ El comando COMMIT lo que hace es tomar una snapshot de tu código (como un pantallazo de su
estado actual).
✓ Puedes usar git status para comparar tu código con el código remoto.
✓ El comando PUSH define que estás listo para subir los cambios.
✓ Si solo has cambiado archivos existentes y no has creado otros nuevos, en lugar de usar git
add. y luego git commit ..., podemos condensar esto en un comando: git commit -am
"Algun mensaje". Este comando confirmará todos los cambios que realizaste.
✓ A veces, el repositorio remoto en GitLab estará más actualizado que la versión local. En este caso,
primero desearás hacer commit de los cambios y luego ejecutar git pull para extraer los
cambios remotos de tu repositorio.
Git – Conflictos con Merges
✓ Un problema que puede surgir cuando se trabaja con Git, especialmente cuando se colabora con
otras personas, es algo llamado conflicto de merge.
✓ Un conflicto de merge se produce cuando dos personas intentan cambiar un archivo de formas
que entran en conflicto entre sí.
✓ Esto suele ocurrir cuando intentas hacer git push o git pull. Cuando esto suceda, Git
cambiará automáticamente el archivo a un formato que describa claramente cuál es el conflicto.
Tendrás que aceptar o rechazar los cambios manualmente.
✓ Otro comando git potencialmente útil es git log, que le brinda un historial de todos tus commits
en ese repositorio.
Git – Conflictos con Merges
✓ Potencialmente aún más útil, si te das cuenta de que has cometido un error, puedes volver a un
commit anterior utilizando el comando git reset de una de estas dos formas:
✓ git reset --hard <commit> revierte tu código exactamente como estaba después de el
commit especificado. Para especificar el commit, usa el hash asociado al commit que se puede
encontrar usando git log.
✓ git reset --hard origin / master revierte tu código a la versión actualmente almacenada
en línea en GitLab.
Git – Branching
✓ Después de haber estado trabajando en un proyecto durante algún tiempo, puedes decidir que
deseas agregar una función adicional. Por el momento, es posible que solo realicemos cambios en
esta nueva función, como se muestra en el gráfico a continuación.
Git – Branching
✓ Pero esto podría volverse problemático si luego descubrimos un error en nuestro código original y queremos revertir sin cambiar la
nueva característica.
✓ Aquí es donde la ramificación puede resultar realmente útil.
✓ La ramificación (branching) es un método para moverse en una nueva rama al crear una nueva funcionalidad (feature), y solo
combinar esta nueva funcionalidad con la parte principal de tu código (master por ej), o la rama principal, una vez que hayas
terminado. Este flujo de trabajo se parecerá más al gráfico siguiente:
Git – Branching
✓ La rama que estás mirando actualmente está determinada por HEAD, que apunta a una de las dos ramas. De
forma predeterminada, HEAD apunta a la rama master, pero también podemos ver otras ramas.
✓ Ahora, veamos cómo implementamos realmente la ramificación en nuestros repositorios de git:
✓ Ejecutas git branch para ver en qué rama estás trabajando actualmente, que tendrá un asterisco a la izquierda
de su nombre.
1. Para crear una nueva rama, ejecutaremos git checkout -b <nuevo nombre de rama>
2. Cambia entre ramas usando el comando git checkout <nombre de rama> y has commit de los cambios en
cada rama.
3. Cuando estemos listos para fusionar nuestras dos ramas, revisaremos la rama que deseamos mantener (casi
siempre la rama master) y luego ejecutaremos el comando git merge <otro nombre de rama>. Esto se trata de
manera similar a un push o pull, y pueden aparecer conflictos de merge.
Git – Otras Cuestiones Adicionales
FORKING
✓ Si tu quieres ser el propietario de algún código publico de otra persona entonces haces lo que se denomina como
fork. El fork hace una copia exacta del código en tu propio repositorio pero ahora tu eres el dueño.
PULL REQUEST
✓ Puede suceder que te hayas bajado el código de alguien mediante un fork (como por ejemplo el de Bootstrap) y le
hayas hecho cambios que lo han mejorado y quieres que se una al desarrollo principal. Entonces lo que haces es un
pull request de tu código hacia el repositorio oficial (de, por ejemplo, Bootstrap). Si la gente de Bootstrap evalua tus
cambios y cree que es un valor agregado al software entonces pueden llegar a aceptar tu pull request y se fusionara.
Éste tipo de desarrollos es uno de los pilares fundamentales del desarrollo de software de código abierto.
Trabajemos Juntos
Llegó la hora del desafío:
• Create una cuenta en GitLab
• Sube algún script que hayas hecho en los ejemplos o desafíos anteriores al
repositorio remoto.
• Intenta modificar ese código, agregando o sacando líneas en tu versión
local. Luego vuélvelo a subir haciendo un push.