Control de versiones

CC5408 - Taller de Diseño y Desarrollo de Videojuegos

Vídeo (Presentación + Demo práctica)

Por: Eric K.

git logo

Git

  • Version Control System (VCS)
  • Maneja código a lo largo del tiempo
  • Usado por desarrolladores para organizar y colaborar en proyectos
git logo

¿Por qué Git?

Y no...

  • Cloud (Google Drive, Dropbox, etc)
  • Mandarse el .zip por WhatsApp
  • Ir turnandose el computador
git logo

¿Por qué Git?

Servidor

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        
Servidor

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        

Eric

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        

Elías

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        
Servidor

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        

Eric

                            def update_player(player, points, damage):
                                player.score += points - damage
                                player.health -= damage * player.armor
                        

Elías

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        
Servidor

                            def update_player(player, points, damage):
                                player.score += points
                                player.health -= damage
                        

Eric

                            def update_player(player, points, damage):
                                player.score += points - damage
                                player.health -= damage * player.armor
                        

Elías

                            def update_player(player, points, damage):
                                player.score += points + player.bonus
                                player.health -= damage
                        
Servidor

                            def update_player(player, points, damage):
                                player.score += points  # ⚠ ¿Que versión toma? (Conflicto)
                                player.health -= damage # ☑ Versión de Eric
                        

Eric

                            def update_player(player, points, damage):
                                player.score += points - damage
                                player.health -= damage * player.armor
                        

Elías

                            def update_player(player, points, damage):
                                player.score += points + player.bonus
                                player.health -= damage
                        

Git te permite:

  • Respaldar tu proyecto remotamente
  • Tener un historial de cambios
  • Revertir cambios y volver a estados anteriores
  • Trabajar en paralelo con otros
  • Resolver conflictos

Terminología

  • Repositorio: Lugar donde se guarda el historial completo de un proyecto
  • Commit: Registro de cambios en el proyecto
  • Branch: Secuencia separada de commits. Permite trabajar en paralelo
  • Main: La rama principal de un proyecto. Antes conocida como master
  • Merge: Combina cambios de una rama en otra para integrar trabajo paralelo

Resumen general

  1. git pull para actualizarte
  2. git log para ver los últimos commits
  3. Haces tus cambios en Godot
  4. git status para ver el estado de tu W.D.
  5. git add . para preparar tus cambios
  6. git commit -m 'mensaje descriptivo'
  7. git push para subir tus cambios

Branches

branches

Branches

branches

Branches

branches

Branches

branches

Branches

branches

Branches

branches

Branches

branches

Branches

branches

Branches

branches

Conflictos

Eric/Server

                        def update_player(player, points, damage):
                            player.score += points - damage
                            player.health -= damage * player.armor
                    

Elías

                        def update_player(player, points, damage):
                            player.score += points + player.bonus
                            player.health -= damage
                    

                        <<<<<<< HEAD
                        def update_player(player, points, damage):
                            player.score += points - damage
                            player.health -= damage * player.armor
                        =======
                        def update_player(player, points, damage):
                            player.score += points + player.bonus
                            player.health -= damage
                        >>>>>>> elias-branch
                    

                        <<<<<<< HEAD
                        def update_player(player, points, damage):
                            player.score += points - damage
                            player.health -= damage * player.armor
                        =======
                        def update_player(player, points, damage):
                            player.score += points + player.bonus
                        >>>>>>> elias-branch
                    

                        <<<<<<< HEAD
                        def update_player(player, points, damage):
                            player.score += points - damage
                            player.health -= damage * player.armor
                        =======
                            player.score += points + player.bonus
                        >>>>>>> elias-branch
                    

                        <<<<<<< HEAD
                        def update_player(player, points, damage):
                            player.score += points - damage + player.bonus
                            player.health -= damage * player.armor
                        >>>>>>> elias-branch
                    

                        def update_player(player, points, damage):
                            player.score += points - damage + player.bonus
                            player.health -= damage * player.armor
                    

Instalando Git

  1. Descargar & instalar Git
  2. Correr:
    git --version
  3. Configurar:
    git config --global user.name "Tu Nombre"
    git config --global user.email "Tu Correo"
  4. Nota: los commits muestran tu correo. Recomiendo usar el correo generado por github

Github

Una plataforma (gratis) para alojar repositorios Git de forma remota, que facilita la colaboración, gestión de proyectos y control de versiones.

Autorizando Git con Github

  1. Crear cuenta en Github
  2. Instalar Github CLI
  3. Correr:
    gh auth login(Luego, HTTPS)

Existen otras formas también

Creando un repositorio

  1. Crear repositorio en Github
  2. En la carpeta un nivel arriba de donde quieres que esté tu proyecto:
    git clone https://github.com/[usuario]/[repositorio].git

Agregando a tus compañerxs

  1. Página del repositorio
  2. Settings
  3. Collaborators
  4. Add people

Godot

  • Siempre hagan pull antes de comenzar a trabajar
  • Godot reclamará si hacen pull mientras está abierto
  • Si tienen conflictos, no avancen en el proceso. Detenganse a resolverlos!
  • Hagan un archivo .gitattributes y escriban
    * text=auto eol=lf

Preguntas

Bonus (Gitkraken)

  1. Github Education - Student Developer Pack
  2. Descargar Gitkraken
  3. Profit

Fuentes y créditos: