A través del desarrollo de este tutorial pondrá en práctica los diferentes conceptos vistos durante el módulo.
Se espera que al finalizar usted pueda:
push
y pull
.El punto de partida es un proyecto web que contiene diferentes recetas de cocina hispanoamericana. Creará el repositorio remoto, lo clonará en su espacio local, agregará nuevas recetas al sitio web y sincronizará los cambios al repositorio remoto.
Descargue los archivos del proyecto disponibles en este repositorio:
Utilice la opción Download ZIP en el botón Code.
Para realizar este tutorial usted debe tener claras las respuestas a las siguientes preguntas:
Pregunta 1. ¿Qué es un repositorio remoto?
Pregunta 2. ¿Cuál es la diferencia entre un repositorio remoto y un repositorio local?
Pregunta 3. ¿Cuál es la utilidad de un repositorio remoto?
Pregunta 4. ¿Qué sucede al clonar un repositorio?
Pregunta 5. ¿Qué es GitHub?
Si no es así, por favor revise los videos y el material propuesto antes de seguir. De esta forma podrá sacarle más provecho.
Realice los siguientes pasos:
GitHub
.New
.Create repository
.Con lo anterior habrá creado un repositorio remoto, ahora copie su URL para empezar a trabajar en él.
Realice los siguientes pasos:
Git
Bash
o la terminal
.$ git clone <url_repositorio_github>
Al ejecutar el comando se inicia la clonación del repositorio y se genera una advertencia indicando que está vacío.
$ git remote -v // la opción -v permite visualizar la URL que Git ha asociado al repositorio
Note la palabra origin
antes de la URL, este es el nombre que Git da al servidor por defecto una vez clonado, en caso de querer cambiarlo ejecute el siguiente comando:
$ git remote rename origin <nuevo_nombre>
Como se dijo en la introducción, el punto de partida para este tutorial es un proyecto web que contiene diferentes recetas de cocina hispanoamericana. Lo que se hará a continuación será realizar cambios a ese proyecto desde el repositorio local y sincronizarlos con el repositorio remoto entendiendo la dinámica del ciclo de trabajo.
Realice los siguientes pasos:
/recetario
en el directorio de su repositorio local.Git Bash
o la terminal
ubíquese en la carpeta del proyecto.$ git status
Note que los archivos están en la copia de trabajo local, pero aún no han sido incluidos en el área de preparación.
$ git add . //Al ejecutar el comando de esta forma, se están agregando todos los cambios al área de preparación.
$ git status
Ahora los archivos han sido etiquetados como new file
, es decir que se encuentran por primera vez en el área de preparación y están pendientes de ser enviados al repositorio.
commit
para añadir los archivos que están en el área de preparación al repositorio.$ git commit -m "Se añade codigo base" //La opción -m implica que habrá un mensaje de confirmación asociado al commit.
Como respuesta Git especifica cuántos archivos han sido cambiados y cuántas líneas de código han sido insertadas o eliminadas.
En este momento, ya cuenta con el código base del proyecto en el repositorio local y está listo para actualizar el repositorio remoto.
$ git push -u repo_remoto master //La opción -u mantiene un registro de la rama a la que se hace push, lo anterior con el fin de evitar conflictos o ausencia de información al hacer pull.
Note que se obtiene como resultado el porcentaje de archivos enviados y no enviados. Además de las ramas de origen y destino.
GitHub
.Ahora el código base del proyecto se encuentra en el repositorio remoto y es posible visualizarlo, navegar en él y obtener información relevante de todo el historial desde cualquier parte del mundo.
Deténgase un poco para navegar en las diferentes opciones de GitHub
.
Siga los siguientes pasos para modificar una receta del repositorio local:
Ubíquese en el siguiente directorio desde su copia de trabajo local: /recetas/Colombia/arroz_coco.html
y corrija la ruta de la imagen por: ../../imagenes/arroz-coco.jpg
$ git status
Ahora el archivo /recetas/Colombia/arroz_coco.html
ha sido etiquetado como modified
(en color rojo), es decir que Git identificó cambios en el archivo de la copia de trabajo local que aún no han sido movidos al área de preparación.
$ git add recetas/Colombia/arroz_coco.html
$ git status
El archivo /recetas/Colombia/arroz_coco.html
ha sido etiquetado como modified
(en color verde), es decir que los cambios ya fueron movidos al área de preparación y están pendientes de guardarse en el repositorio.
$ git commit -m "Se modifica ruta de imagen en receta"
$ git log
Verifique los 2 commit
realizados hasta el momento: su identificador, fecha de creación, autor y mensajes de confirmación.
Note que el primer commit tiene la etiqueta (repo_remoto/master)
mientras que el segundo tiene la etiqueta (HEAD -> master)
, esto quiere decir que el primero se encuentra sincronizado con el repositorio remoto mientras que el segundo sólo está en el repositorio local.
diff
para consultar las diferencias entre la rama master del repositorio local y la rama master del repositorio remoto.$ git diff repo_remoto/master master
Como puede observar, este comando permite identificar el directorio del archivo modificado y las líneas específicas que fueron cambiadas, en este caso la línea roja representa lo que está en el repositorio local y la verde lo que está en el repositorio remoto.
$ git push
Ahora el repositorio remoto ha sido actualizado con los últimos cambios.
$ git log
Ahora las etiquetas (HEAD -> master)
y (repo_remoto/master)
se encuentran en el segundo commit
, esto significa que el repositorio local y el remoto están actualizados.
Después de agregar el código base y modificar un archivo, es hora de agregar una nueva receta al proyecto.
Siga los siguientes pasos:
/files_to_add/Mexico
en el directorio /recetas
de su copia de trabajo local./files_to_add/imagenes/pozole.jpg
en la carpeta /imagenes
de su copia de trabajo local.$ git status
$ git add .
$ git commit -m "Se incluye receta mexicana"
$ git push
$ git log
Para devolverse a una versión anterior utilice el comando reset
. Dicho comando restablece el apuntador de la versión actual (HEAD)
a la especificada.
Es posible usarlo de diferentes formas, en este tutorial aprenderá dos:
$ git reset --hard <id_commit>.
$ git reset --hard HEAD~<numero_de_commit_atras>
Realice los siguientes pasos para devolverse a la versión inicial (primer commit
):
commit
consultado en la sección anterior, utilice el comando de su preferencia.$ git reset --hard HEAD~2
Note que se ha devuelto 2 commit
hasta llegar al primero.
commit
.Al consultar el log, podrá verificar que los demás commit
fueron eliminados. Sin embargo, estos cambios sólo están en el repositorio local (HEAD -> master)
.
$ git push -f origin master //la opción -f o --force sobre escribe toda la estructura y secuencia de commits en el repositorio remoto. Lo recomendable es asegurarse de hacer pull y estabilizar el código en el repositorio local antes de hacer push.
Dado que Git encontrará diferencias en cuanto a la posición del HEAD
en el repositorio local y el repositorio remoto, es probable que rechace el push
. Para evitarlo force la operación agregando -f
y la rama de destino.
commit
.$ git log
Como puede observar tanto el repositorio local como el repositorio remoto se han devuelto a la primera versión.