On Github MiguelNieva / presentacion-mejorandogit
Seth Godin
"Somos una revolución, un movimiento, una nueva generación tecnológica que abre, unida, el futuro de la Web"Comunidad Mejorando.la
- Módulo "Bienvenidos al curso".
- Artículos + Videos + Discusiones.
Generes un proyecto, vayas salvando sus cambios y puedas viajar en el tiempo con él.
1.1 Instalación
1.2 Sistemas de Control de Versiones.
1.3 ¿Qué es Git?
1.4 Arquitectura de Árbol.
1.5 Configurando GIT.
Preguntas a #mejorandogit
Al sistema de discusiones ó un DM
a) Entren a http://git-scm.com
b) Escoja dependiendo de Windows, Mac, Linux
1) Registran y guardan cada modificación del proyecto en un registro. Todo lo que modificas, lo vigilan.
2) Te dan acceso a este registro. Con esto, puedes gestionarlo, compartirlo, colaborarlo, administrarlo, editarlo, etc.
3) Podrás moverte hacia atrás o hacia adelante en diferentes momentos del proyecto.
Abrir terminal, consola, bash
$ git --version
$ git config --global user.name "TU NOMBRE"
$ git config --global user.email "TU CORREO DE GITHUB"
$ git config --global color.ui true
$ git config --global --list
#mejorandogit
- Módulo "Bienvenidos al curso".
- Artículos + Videos + Discusiones.
- Lean el módulo de Instalación - Conceptos básicos
Con nuestro proyecto portafolio, generaremos 3 versiones. Una estable, una experimental y una que fusionemos.
¡Practica! ¡Falla! ¡Experimenta!
2.1 Propuestas de proyectos
2.2 Ramas (Branches)
2.3 Fusiones (Merge)
Preguntas a #mejorandogit
Al sistema de discusiones ó un DM
¿Cómo puedo intervenir positivamente en el proyecto sin afectarlo?
¿Cómo puedo enfocarme en resolver un bug, un problema, sin afectar el avance de mi equipo?
Como profesionales, proponer es una de las habilidades más importantes para crecer dentro de una empresa.
Por ello, en GIT, existen las ramas, también conocidos como "branches".
Una rama es una línea alterna del tiempo, en la historia de nuestro repositorio.
Funciona para crear features, arreglar bugs, experimentar, sin afectar la versión estable, la línea principal, del proyecto.
El concepto HEAD
¿En qué punto de la historia de nuestro proyecto nos encontramos?
Practiquemos ramas
git branch [nombre]
git log --oneline --graph --all
git config --global alias.nicelog 'log --oneline --graph --all'
Repitamos el proceso de la fusión
git checkout [branch]
git checkout [branch]
git checkout [branch]
Hagamos la fusión
Fu...
...sión!
La fusión tiene la mezcla de los cambios de ambas ramas
Lo mejor de ambas, establecidas por el gestor del proyecto
Solución de conflictos
a) Fast-Forward
b) Manual Merge
Solución de conflictos
Fast-Forward
Los gestores trabajaron archivos diferentes al repositorio
Solución de conflictos
Manual Merge
¿Qué pasa cuando 2 desarrolladores trabajan el mismo archivo en la fusión?
#mejorandogit
Clase 3 - #mejorandogit
- Módulo "Bienvenidos al curso".
- Artículos + Videos + Discusiones.
- Lean los 2 módulos anteriores
Preguntas a #mejorandogit
Al sistema de discusiones ó un DM
1) Crear un repositorio en GitHub y vincularlo en local.
2) Subir nuestro portafolio a nuestro repositorio "forked" en GitHub.
1) GitHub & Workflows
2) Repositorios propios
3) Repositorios "forked"
Es una plataforma social para construir proyectos web.
Flujos de trabajo colaborativos.
¿Cómo logro que varios profesionales web trabajen sobre un mismo proyecto, sin morir en el intento?
Exploración: Git Clone
$ git clone [https or SSH]
$ git log (comprobar commits)
Git Clone
Git Clone
Git Clone
1) Repositorios propios (Sólo YO)
- Ustedes son los dueños de su proyecto
- Si alguien decide participar, ustedes deciden si aceptan sus propuestas
- Sirve para guardar proyectos, regularmente personales.
1) Crear un repositorio
2) Vincularlo con nuestra PC
3) Generar cambios y subirlos a GitHub
Subir cambios a GitHub
Subir cambios a GitHub
Subir cambios a GitHub
Subir cambios a GitHub
Subir cambios a GitHub
Subir cambios a GitHub
$ git init
$ git remote add origin [HTTPS or SSH]
$ git remote -v
Generamos cambios
$ git commit -am "[Mensaje]"
$ git push origin master
- Es lo mismo que el proceso anterior.
- Todos los cambios que hagan nuestros colaboradores lo subirán al repositorio
- Es nuestra obligación, descargar los nuevos cambios antes y después de codificar.
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Git Fetch & Git Merge
Creamos ó entramos a la carpeta de nuestro proyecto
$ git init (si apenas vamos a iniciar)
$ git remote add origin [HTTS or SSH]
$ git fetch origin
$ git merge origin/master
Hacen cambios
$ git fetch origin
$ git merge origin/master
$ git push origin master
3) Repositorios "forked" (De 3º's, hay gestores)
- Ustedes no son los dueños pero quieren participar en el desarrollo.
- Los dueños del proyecto le dan la visión (que commits sí y que commits no)
- Todo esto a través del concepto de Pull Request (PR)
Repositorios "forked"
Necesitamos conectar 2 repositorios.
1) Su repositorio forked (el que se colocó en su cuenta de GitHub y son dueños)
2) El repositorio principal (no son dueños)
Repositorios "forked"
Repositorios "forked"
Repositorios "forked"
Repositorios "forked"
Repositorios "forked"
Repositorios "forked"
Ciclo final - Repositorios "forked"
Repositorios "forked"
La idea es:
- Siempre que vayamos a iniciar cambios, actualizarnos con el proyecto principal.
- Hacer nuestros cambios, experimentos, etc.
- Revisar nuevamente si no hubo cambios con el proyecto principal.
- Subir a nuestro forked repository todo lo que hemos hecho.
- Si queremos, crear un pull request para colaboración.
Repositorios "forked"
Crear ó entrar a la carpeta del proyecto
$ git remote add origin [HTTPS ó SSH del proyecto forked]
$ git remote add upstream [HTTPS ó SSH del proyecto "main"]
$ git fetch upstream
$ git merge origin/upstream
$ git fetch origin
$ git merge origin/master
Hacer cambios en local
$ git fetch upstream
$ git merge origin/upstream
$ git push origin master
Repositorios "forked"
Si queremos, realizamos un Pull Request al proyecto principal ("main")
Artículos
- Tags
- git pull = git fetch + git merge
¿Qué opinan del curso?
Envíanos un tweet a #mejorandogit
Clase 4 - #mejorandogit
- Módulo "Bienvenidos al curso".
- Artículos + Videos + Discusiones.
- Lean los 3 módulos anteriores
Preguntas a #mejorandogit
Al sistema de discusiones ó un DM
- Subir nuestro portafolio a través de un GitHub Pages.
- Conocer el despliegue básico, utilizando GitHub, un servidor y SSH.
- Hacer un Flow de Issues para trabajo en equipo.
1) Deployment.
2) Ambientes
3) GitHub Pages.
4) Manual Deployment
Es la manera de llevar tus proyectos al mundo
Todas las actividades que hacen a un proyecto de software disponible para su uso
- Se pierde el código, se pierde todo
- Como no hay un SCV, el equipo puede encimar sus avances
- Si el código falla en producción, regresar al momento anterior es un caos.
SSH
Secure Shell
Autenticación - "Are you the owner?"
Clase 5 - #mejorandogit
El tiempo es el activo más valioso, no el dinero.
Automaticen y enfóquense en lo importante.
- Módulo "Bienvenidos al curso".
- Artículos + Videos + Discusiones.
- Lean los 4 módulos anteriores
Preguntas a #mejorandogit
Al sistema de discusiones ó un DM
- Shell Scripts (.sh)
- Git Hooks
- Automatic Deployment
- Deploy Total en Server
Serie de comandos encapsulados dentro de un archivo .sh
Son scripts que se ejecutan antes, durante ó después de realizar un movimiento con GIT.
Estos scripts son archivos ".sh".
Git consta de 17 hooks
Documentación Completa y Actualizada
https://github.com/git/git/blob/master/Documentation/githooks.txt
Git consta de 17 hooks
post-commit
Después de generar un commit, genera estos comandos.
post-commit
Creamos una carpeta.
Buscamos el .git/hooks
Activamos el post-commit (.sh) con nuestro código
Le damos permisos ($ chmod +x post-commit)
Subimos un commit a GitHub
El manual deployment, automatizado.
- Creamos una carpeta
- Jalamos un repositorio de GitHub
- Creamos un archivo .gitignore y deploy.sh
- Generamos cambios
- Creamos el Git Hook y lo llenamos
- Autorizamos el Git Hook
- Con .gitignore, pedimos ignorar archivos .sh
- En deploy.sh, escribimos los comandos que correran en servidor
- Revisamos que el servidor tenga SSH pero no password verification
- Creamos nuestra carpeta donde correrá la aplicación
Generamos un commit en local y que corra todo.
Si por una circunstancia extrema, no puedes usar GitHub.
Para este caso, existen los "bare repositories"
Un "bare repository" únicamente guarda el historial de cambios, con todos sus archivos, pero no pueden editarlos como tal.
Crearemos un "GitHub" dentro del servidor, una carpeta que será nuestra central de repositorios ó proyectos.
Posteriormente, desplegamos en servidor, dentro de la carpeta de la app.
En twitter, #mejorandogit