https://github.com/johnny-godoy/laboratorios-mds¶GitResponda las siguientes preguntas (0.2 pts c/u):
¿Qué es Git y cómo se relaciona con el control de versiones?
Nombre y explique 3 diferencias entre Git y Github.
¿Qué es un hash y cómo se representa en un commit? De un ejemplo.
¿Que elementos componen a la estructura de datos de Git?
¿Que comandos de Git sirven para crear un repositorio y hacer seguimiento a cambios en los archivos?
Escriba sus respuestas acá:
git init <repository-name>git diffgit logResponda si las siguientes afirmaciones son Verdaderas (V) o Falsas (F). Justifique en cualquiera de los casos (0.2 pts c/u):
Git siempre resuelve automáticamente los problemas de lineas al hacer merge entre diferentes ramas.git pull sobre un repositorio es equivalente a ejecutar git clone.Git.Git es posible deshacer cambios y volver a versiones anteriores del código.git commit se utiliza para enviar cambios al repositorio remoto.Escriba sus respuestas acá:
pull realiza actualizaciones locales de un repositorio que ya está clonado (es decir, para el cual ya tenemos una copia local)push para actualizar su trabajo y pull para recibir las actualizaciones de los otros miembros.checkout. Si ya se subió remotamente (con push), también podemos obtenerlo del repositorio remoto (con pull). El comando reset también puede volver a un commit anterior y revertir todo su uso, dejándolo en la historia de versionamiento.commit guarda los cambios locales, no el remoto. Para pasar estos cambios locales al repositorio remoto, se debe usar push después de ya haber realizado commit.Para empezar a "soltar las manos" con Git, se les encomienda crear un repositorio con una presentación personal. El repositorio debe contener un breve resumen de quienes son ustedes, sus gustos, experiencias, y cualquier otro detalle interesante que ustedes consideren relevante.
Para realizar esto, deben seguir los siguientes pasos:
readme.md con la información que ustedes deseen compartir.A modo de ejemplo, pueden guiarse por esta suculenta presentación.
Hint: Una buena opción es usar templates de presentación personal que encuentren en Google, como los que ofrece este sitio.
Entregable:
Enlace al repositorio con la presentación personal.
IMPORTANTE: DEBEN ADJUNTAR UN ENLACE POR PERSONA
Link Presentacion 1: https://github.com/johnny-godoy Me disculpo si no es muy breve, ya lo tenía hecho de antes!
Tras muchos dolores de cabeza, un grupo de entusiastas académicos decidieron aprender sobre Git y así trabajar colaborativamente de forma más ordenada y eficiente. Después de una infinidad de intentos y aprender de sus errores "a la mala", los académicos lograron levantar un repositorio en Github. Usando el repositorio de los académicos, responda las siguientes preguntas (incluya también los comandos en Git ocupados):
Escriba sus respuestas acá:
git clone https://github.com/MDS7202/lab1.git
Escriba sus respuestas acá:
En el último commit, el repositorio contiene tres archivos:
readme.md, que explica el objetivo del proyecto, que es emular los sonidos de animales.animales.py, que implementa la función animales, que recibe el nombre de un animal, e imprime el sonido que este hace (en distintas formas según el animal...)main.py, que es un programa interactivo que le pregunta al usuario el nombre de un animal, y luego le imprime el sonido correspondientecommit realizados? (0.25 pts)Hint: Se recomienda usar los argumentos all, graph y decorate
Escriba sus respuestas acá:
Para ver las ramas:
git branch -av
En este caso hay 3 ramas remotas: main, fix-ifs y new_features. Además, está nuestro clon local de la rama main realizado en la parte 1, que se llama main también.
Para ver los cambios:
git log --all --graph --decorate
El último commit se realizó en fix-ifs, con una descripción no informativa "fix ifs", que no agrega nada al nombre de la rama. El anterior fue la separación en módulos que se realizó en main es más informativo, y explica que el proyecto se separó en módulos. Antes de eso igual es en main, y dice que agrega función. Esto solamente se entiende porque el proyecto tiene una única función, pero en general no sería un buen mensaje. Antes de eso estuvo el commit inicial de creación, cubriendo todos.
git blame (0.25 pts)Hint: Le puede ser útil esta documentación.
Escriba sus respuestas acá:
El error está en la implementación de la función animales. Considerar el caso input="gato", que correctamente imprime "miau", pero luego se verifica que input!="zorro", por lo cual cae un error. Esto fue un error de uso de if en vez de elif.
Para determinar quién cometió el error, se usa git blame animales.py:
Vemos que la implementación incorrecta la hizo el usuario mezosky.
commit:c8b1a62d7299552b0654f930d695b33109214111362fe21ee44f53ee944cee4ba484600308f83d7825543a3baf77292baf849726784ca005473acab1¿Qué diferencias existen entre cada uno? (0.25 pts)
Escriba sus respuestas acá:
Cada uno se busca con git show:
animales en main.py
2. (Output truncado) Este mueve la función
animales al módulo animales.py
3. Este corrige la implementación de la función
animales. Notar que esto no es en la rama main, así que la función está en main.py.
merge de la rama fix-ifs con la rama main y describa lo que ocurre. ¿Qué parte del código podría estar ocasionando esto? (0.25 pts)Escriba sus respuestas acá:
Al realizarlo hay un conflicto:
Esto ocurre porque el último commit en ambas ramas es una modificación de líneas de main.py, por lo cual no se puede resolver automáticamente con cual modificación quedarse.
Escriba sus respuestas acá:
Primero se crea la rama nueva con git branch jgodoy-fix-control_flow, y se mueve a esta rama con git checkout jgodoy-fix-control_flow.
Notemos que esta se basa en la rama main, no en fix-ifs, por lo cual las modificaciones que hay que hacer son implementar los arreglos de fix-ifs en animales.py.
Si basáramos la rama en fix_ifs entonces la modificaciones serían más complejas, pues habría que mantener main.py de la misma forma que en la rama main, así que habría que repetir más cambios.
Entonces, solamente hay que realizar cambios pequeños en animales.py, los if por los elif tal como en fix-ifs, cambiando la línea 9 y 11:
Luego, se agrega animales.py a staging usando git add animales.py y se guardan los cambios con git commit -m "fix: control flow bug":
Para terminar, se junta en la rama main con git merge jgodoy-fix-control_flow main:
Finalizando el arreglo.
Eso ha sido todo por ahora!! Esperamos que este laboratorio les haya gustado y servido para trabajar con Git. Recuerden los dias de plazo que tienen disponibles y que ante cualquier duda no duden en contactar al equipo docente.
Nos vemos!!