[MÚSICA] [MÚSICA] Bienvenidos. En este video, veremos un ejemplo sencillo en un repositorio local para estudiar los comandos básicos de Git para usar ramas. Supongamos que tenemos un repositorio con una página web de nuestra hoja de vida. En el proyecto, tenemos los siguientes archivos, una página HTML con el contenido de la hoja de vida y una carpeta con las imágenes. Esta versión you la tenemos publicada en un sitio web. Revisemos primero las ramas que tiene el repositorio. El comando branch sin parámetros lista las ramas. Solo tenemos una rama, la rama master. El asterisco antes del nombre de la rama significa que esta es la rama en la que estamos. Consultemos el log del repositorio con la opción oneline para verlo de forma resumida. Tenemos una sola versión y la rama master queda apuntando a esa versión. El head también apunta a la rama master y apunta a la última versión de la rama. Queremos cambiar la hoja de vida porque en este momento está muy simple. Vamos a agregar información y a modificar el diseño gráfico. Mientras hacemos estos cambios de la hoja de vida, no queremos modificarla, por esta razón, vamos a crear una rama para realizar los cambios y al finalizar, integraremos las dos ramas. Para crear la rama, usamos el comando branch seguido del nombre que le daremos a la rama. Creemos la nueva rama disNuevo. Veamos de nuevo el listado de ramas. Ahora tenemos dos ramas, pero estamos sobre la rama master, lo sabemos por el asterisco. También lo podemos ver usando log. Vemos que estamos en la rama master porque el head referencia a la rama master. Master y disNuevo están la única versión que tiene el repositorio. Para movernos a la nueva rama, usamos el comando checkout con el nombre de la rama. El efecto es que el head se mueve a la rama disNuevo, como podemos comprobar al hacer el log. El primer cambio que hacemos modifica el contenido del archivo HTML y agrega un archivo en la carpeta de imágenes. Adicionamos estos dos archivos al área de preparación con el comando add y hacemos commit para enviar los cambios al repositorio. Esto crea una nueva versión sobre la rama disNuevo y la referencia en la rama y del head se mueven a esta última versión. Al realizar el log, vemos que la rama disNuevo apunta a la nueva versión y que la rama master sigue apuntando a la versión anterior. El comando diff nos permite comparar las dos ramas. Al comparar la rama master con la rama nueva, vemos los cambios de la página HTML y que en la rama disNuevo hay un nuevo archivo que no está en la rama master. En este momento, nos damos cuenta que en la hoja de vida publicada el correo no es el correcto y se debe corregir de inmediato. No podemos hacer la corrección sobre la versión que tenemos en el espacio local, porque no hemos finalizado los cambios y esta versión todavÃa no se puede publicar. El cambio lo debemos hacer sobre la versión de la rama master, pero en el espacio local tenemos la última versión de la rama en la que estamos trabajando el nuevo diseño. Como no hay cambios pendientes de commit en el espacio local, podemos pasarnos a la rama master. Utilizamos de nuevo el comando checkout y el nombre de la rama a la que queremos cambiar, master. En el espacio local, ahora tenemos la última versión de la rama master y podemos hacer la corrección y enviarla al repositorio usando commit con la opción -a que you conocemos. La rama master apunta ahora a esta nueva versión y el head a la rama master. El comando git log con las opciones oneline, all y graph nos muestra el grafo de versiones de tal forma que podemos ver fácilmente las versiones que corresponden a cada rama. Regresemos ahora a la rama disNuevo para terminar los cambios. De nuevo usamos el comando checkout para cambiar a la rama disNuevo. Realizamos los cambios que faltan en la página HTML y con commit -a los enviamos al repositorio. Estos cambios you están listos y los vamos a integrar a la rama master para luego publicar la nueva versión en el sitio web. Para fusionar dos ramas, debemos ubicarnos primero en la rama en la que deseamos integrar los cambios. En este caso, será la rama master. you sabemos cambiar de rama, entonces usemos checkout master para ir a la rama master. Para integrar la rama disNuevo en la rama master, utilizamos el comando git merge y el nombre de la rama que vamos a integrar. En este caso, que las dos ramas tienen cambios, Git mezcla las últimas versiones de las dos ramas. Si no hay conflictos, genera una versión con la mezcla en el repositorio. Si hay conflictos, realiza la mezcla en el espacio local y nos indica los archivos en los que hay conflicto. El archivo nuevo en la carpeta de imágenes no tiene ningún conflicto, mientras que el archivo HTML sà presentó conflictos. Como vimos en el video de manejo de conflictos, Git deja marcados los archivos con conflicto en el espacio local, de esta forma los podemos analizar y resolver y hacer un commit de la versión mezclada en la rama master, creando una nueva versión. Con el comando log, podemos ver el estado de la historia de las ramas. En la rama master, tenemos la primera versión, la correccióndel error y la mezcla de la rama disNuevo. Y en la rama disNuevo, solo las versiones del cambio de diseño. La última versión que tenemos en la rama master es la que publicamos para actualizar la hoja de vida en el sitio web. Ahora queremos continuar mejorando el diseño y el contenido de la hoja de vida. Debemos actualizar la rama disNuevo antes de continuar las modificaciones. Para esto, nos pasamos primero a la rama disNuevo. El espacio local se actualiza con la última versión de la rama disNuevo. Para actualizar esta rama con la rama master, basta con mezclar la rama master en la rama disNuevo con el comando git merge master. Vemos que en este caso se hace la mezcla utilizando un fast forward, porque entre las dos versiones no hay versiones intermedias. Ahora, podemos actualizar el diseño. Realizamos dos commits sucesivos agregando archivos. Vemos en el log que la rama disNuevo está dos versiones adelante de la rama master. Vamos ahora a mezclar la rama disNuevo en la rama master. Debemos primero volver a la rama master y luego realizar el merge de disNuevo en master. En este caso, se hace de nuevo un fast forward y el head y la rama master se mueven a la última versión de la rama disNuevo. Hemos visto las operaciones básicas para el manejo de ramas usando un repositorio local. En el siguiente video, estudiaremos el uso de ramas cuando utilizamos repositorios remotos. [MÚSICA] [MÚSICA] [MÚSICA] [MÚSICA] [AUDIO_EN_BLANCO] [MÚSICA]