Tabla de Contenidos
Control de versiones con Git Avanzado
Notas del curso Control de versiones con Git Avanzado del Clúster Tic de Galicia.
- Horas: 35
- Fecha Inicio: 29/05/2023
- Fecha Fin: 16/07/2023
Objetivos
En este curso vas a aprender cómo funciona el control de versiones más utilizado en la actualidad, cuál es la mejor manera de utilizarlo para evitar conflictos, y cómo manejar la consola de comandos para tener control sobre todo el registro histórico de cambios en tu proyecto.
Conocerás las tripas de Git, que ocurre exactamente cuando haces un commit, como se organizan internamente las ramas y como entender y manejar el histórico de cambios a tu antojo.
También aprenderás las mejores técnicas de branching, como trabajar con un servidor remoto y como organizar un equipo de desarrolladores para que todos puedan contribuir al código simultáneamente sin que surjan conflictos.
Conseguirás hacer de Git un aliado perfecto que acompañará a tu desarrollo dibujando un recorrido de cambios totalmente controlado por ti, y que ayudará a tu equipo a organizar y a revisar el código de una manera más eficiente.
Dominarás las buenas prácticas de versionado y con ello reducirás el número de conflictos y la gravedad de éstos, de manera que toda la evolución del código del proyecto estará bajo tu control y el de tus compañeros de equipo.
Temario
-
- 1.1 Introducción
- 1.2 ¿Qué es el control de versiones?
- 1.3 VCS centralizados / distribuidos
- 1.4 Línea de comandos vs. interfaces gráficas
- 1.5 Modelo de branching
- 1.6 Conclusión
-
- 2.1 Introducción
- 2.2 Descarga y pasos del asistente de instalación
- 2.3 Configuración de Git
- 2.4 Conclusión
-
- 3.1 Introducción
- 3.2 Working directory y repositorio
- 3.3 Commits
- 3.4 Stage
- 3.5 Referencias: ramas, tags y HEAD
- 3.6 Ignorar archivos y carpetas
- 3.7 Conclusión
- 4. Commits
- 4.1 Introducción
- 4.2 Preparación de un commit por etapas
- 4.2.1 Trabajando con el stage
- 4.2.2 Realizando el commit
- 4.2.3 Ejemplos de commits por etapas
- 4.3 Partes de un commit
- 4.4 El log
- 4.4.1 Comandos para trabajar con el log
- 4.4.2 Saltos entre commits, reset y reflog
- 4.5 Apartar cambios con stash
- 4.6 Cómo deshacer
- 4.7 Conclusión
- 5. Conflictos
- 5.1 Introducción
- 5.2 Qué significan y cómo resolverlos
- 5.3 Herramientas para resolver conflictos
- 5.4 Conclusión
- 6. Branching
- 6.1 Introducción
- 6.2 El modelo de ramas de Git
- 6.3 Trabajo con ramas
- 6.3.1 Comandos para trabajar con ramas
- 6.3.2 Ejemplo de trabajo con ramas
- 6.4 Fusionando código: merge, rebase y cherry-pick
- 6.4.1 Fusionando código: merge
- 6.4.2 Ejemplo práctico de merge
- 6.4.3 Fusionando código: rebase
- 6.4.4 Ejemplo práctico de rebase
- 6.4.5 Fusionando código: Cherry-pick
- 6.5 Métodos para mover referencias
- 6.6 Deshacer errores con las ramas
- 6.6.1 Cómo corregir errores con las ramas
- 6.6.2 Cómo deshacer un merge
- 6.6.3 Cómo deshacer una rebase y un Cherry-pick
- 6.7 Git Flow
- 6.7.1 El modelo git flow
- 6.7.2 Poniendo en práctica git flow
- 6.8 Conclusión
-
- 7.1 Introducción
- 7.2 Servidores Git: GitHub, Bitbucket, GitLab, Azure DevOps / Team Foundation Server
- 7.2.1 Trabajar con servidores remotos
- 7.2.2 Soluciones existentes
- 7.3 Trabajar con remotes
- 7.4 Push, fetch y pull
- 7.4.1 Comunicación con el remoto
- 7.4.2 Poniendo en práctica la sincronización con el remoto
- 7.4.3 Comandos para comunicarnos con el remoto
- 7.5 Conclusión
-
- 8.1 Introducción
- 8.2 Git GUI y gitk
- 8.3 TortoiseGit
- 8.4 SourceTree
- 8.5 GitKraken
- 8.6 EGit para Eclipse
- 8.7 Team Explorer de Visual Studio
- 8.8 Conclusión
- 9. Submódulos
- 9.1 Introducción
- 9.2 Repositorios anidados
- 9.3 Como crearlos y como trabajar con ellos
- 9.4 Conclusión
- 10. Pull Requests
- 10.1 Introducción
- 10.2 Creación de PR y discusión del código
- 10.3 Pull Requests: caso práctico
- 10.4 Pull Requests con conflictos
- 10.5 Conclusión
Test de conocimientos
¿Qué significa que Git sea un sistema distribuido de control de versiones?
- Que cada usuario tiene su propia copia del código del proyecto en el disco duro.
- Que hay un servidor central que almacena los cambios del archivo.
- Que solo se puede trabajar con una versión del código a la vez.
- Que se necesita una conexión a internet para usar Git.
¿Qué ventaja tiene que la mayoría de las operaciones en Git sean locales?
- Que se puede trabajar sin conexión a internet.
- Que se reduce el riesgo de perder datos o sufrir ataques.
- Que se mejora el rendimiento y la velocidad de Git.
- Todas las anteriores.
¿Qué es una suma de comprobación y para qué sirve en Git?
- Es un código único que identifica cada archivo o directorio en Git y sirve para verificar su integridad y evitar su alteración.
- Es un número que indica el tamaño de cada archivo o directorio en Git y sirve para optimizar el espacio y el tiempo de transferencia.
- Es una etiqueta que se asigna a cada archivo o directorio en Git y sirve para clasificarlos según su tipo o función.
- Es un comando que se ejecuta en Git y sirve para comparar dos versiones del código y mostrar sus diferencias.
¿Qué significa que un archivo esté modificado, preparado o confirmado en Git?
- Que ha sido creado, editado o eliminado respectivamente.
- Que ha sido revisado, aprobado o rechazado respectivamente.
- Que ha sido cambiado, añadido al área de preparación o guardado permanentemente respectivamente.
- Que ha sido fusionado, bifurcado o clonado respectivamente.
¿Qué diferencia hay entre un repositorio local y uno remoto?
- Que el local se guarda en el disco duro del usuario y el remoto se guarda en un servidor o plataforma externa.
- Que el local solo puede ser accedido por el usuario y el remoto puede ser compartido con otros usuarios.
- Que el local solo contiene los archivos modificados y el remoto contiene todo el historial de cambios.
- Todas las anteriores
¿Qué ventaja tiene trabajar con ramas en git?
- Que permite experimentar con nuevas funcionalidades sin afectar al código principal.
- Que facilita la colaboración entre varios desarrolladores sin generar conflictos.
- Que permite mantener varias versiones del código para distintos propósitos.
- Todas las anteriores.
¿Qué ocurre cuando hay un conflicto al fusionar dos ramas en git?
- Que se borra una de las ramas y se conserva la otra.
- Que se crea una nueva rama con los cambios combinados.
- Que se detiene la fusión y se muestra al usuario los archivos conflictivos para que los resuelva manualmente.
- Que se aplica un algoritmo que decide qué cambios prevalecen sobre los otros.
¿Qué comando se usa para crear un nuevo repositorio local en git?
git initgit clonegit statusgit add
¿Qué comando se usa para copiar un repositorio remoto a local?
git initgit clonegit statusgit add
¿Qué comando se usa para ver el estado de los archivos modificados?
git initgit clonegit statusgit add
¿Qué comando se usa para añadir todos los archivos modificados al área de preparación?
git addgit add -agit add all- Todas las anteriores.
¿Qué comando se usa para guardar los cambios en el repositorio local con un mensaje “Actualización”?
git commit “Actualización”git commit -message “Actualización”git commit -m “Actualización”- Todas las anteriores.
¿Qué comando se usa para enviar los cambios al repositorio remoto llamado origin en la rama main?
git push origin maingit push main origingit push --origin maingit push --main origin
¿Qué comando se usa para recibir los cambios del repositorio remoto y fusionarlos con el local?
git pullgit fetchgit merge- Ninguna de las anteriores.
¿Qué comando se usa para crear una nueva rama llamada feature?
git branch featuregit checkout featuregit branch --create feature- Todas las anteriores.
¿Qué comando se usa para cambiar a la rama feature o crearla si no existe?
git branch featuregit checkout -b featuregit checkout --create feature- Todas las anteriores.
¿Qué comando se usa para crear un pull request desde la terminal?
git pull-requestgit request-pullgit push –request- Ninguno de los anteriores.
¿Qué flujo de git usa ramas específicas para el desarrollo, la integración, el lanzamiento y el mantenimiento?
- Feature Branch Workflow
- Gitflow Workflow
- Forking Workflow
- Ninguno de los anteriores.
¿Qué flujo de git permite a los desarrolladores trabajar en su propio repositorio y enviar pull requests al repositorio oficial?
- Feature Branch Workflow
- Gitflow Workflow
- Forking Workflow
- Ninguno de los anteriores.
¿Qué flujo de git usa una sola rama principal y varias ramas de funcionalidades que se integran mediante pull requests?
- Feature Branch Workflow
- Gitflow Workflow
- Forking Workflow
- Ninguno de los anteriores.
¿Qué comando se usa para agregar un submódulo a un proyecto existente?
git submodule initgit submodule addgit submodule clonegit submodule create
¿Qué comando se usa para actualizar el contenido de los submódulos?
git submodule pullgit submodule fetchgit submodule updategit submodule sync
¿Qué archivo almacena la información sobre los submódulos?
gitignoregitconfiggitmodulesgitsubmodules
¿Qué opción se puede usar para clonar un repositorio con todos sus submódulos?
--include-submodules--recurse-submodules--with-submodules--all-submodules
