Git 2014 – Desafíos – GIT 2016



Git 2014 – Desafíos – GIT 2016

65 9


presentacion-mejorandogit

Presentación completa del curso profesional de Git y Github.

On Github MiguelNieva / presentacion-mejorandogit

Escoge tu clase:

  1 - Básico

  2 - Básico

  3 - Intermedio

  4 - Avanzado

  5 - Avanzado

"Fear isn't the enemy. Paralysis is the enemy."

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

Roadmap

Recomendaciones

- Módulo "Bienvenidos al curso".

- Artículos + Videos + Discusiones.

Objetivo principal

Generes un proyecto, vayas salvando sus cambios y puedas viajar en el tiempo con él.

Empecemos con el contexto

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.

[En vivo]

Preguntas a #mejorandogit

[Diferido]

Al sistema de discusiones ó un DM

1.1 Instalación

a) Entren a http://git-scm.com

b) Escoja dependiendo de Windows, Mac, Linux

1.2 Sistemas de Control de Versiones

1.2 Sistemas de Control de Versiones

1) Registran y guardan cada modificación del proyecto en un registro. Todo lo que modificas, lo vigilan.

1.2 Sistemas de Control de Versiones

2) Te dan acceso a este registro. Con esto, puedes gestionarlo, compartirlo, colaborarlo, administrarlo, editarlo, etc.

1.2 Sistemas de Control de Versiones

3) Podrás moverte hacia atrás o hacia adelante en diferentes momentos del proyecto.

1.3 ¿Qué es GIT?

1.3 ¿Qué es GIT?

1.3 ¿Qué es GIT?

1.3 ¿Qué es GIT?

1.4 Arquitectura de árbol

1.4 Arquitectura de árbol

1.4 Arquitectura de árbol

1.4 Arquitectura de árbol

1.4 Arquitectura de árbol

1.5 Configuración

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

Ejercicio (70% de git)

Ejercicio (70% de git)

Ejercicio (70% de git)

Manden un tweet con un screenshot de su portafolio:

#mejorandogit

Curso Profesional de Git y GitHub

#mejorandogit

Roadmap

Recomendaciones

- Módulo "Bienvenidos al curso".

- Artículos + Videos + Discusiones.

- Lean el módulo de Instalación - Conceptos básicos

Objetivo principal

Con nuestro proyecto portafolio, generaremos 3 versiones. Una estable, una experimental y una que fusionemos.

Consejo:

¡Practica! ¡Falla! ¡Experimenta!

Empecemos con el contexto

2.1 Propuestas de proyectos

2.2 Ramas (Branches)

2.3 Fusiones (Merge)

[En vivo]

Preguntas a #mejorandogit

[Diferido]

Al sistema de discusiones ó un DM

2.1 Propuestas de Proyectos

¿Cómo puedo intervenir positivamente en el proyecto sin afectarlo?

2.1 Propuestas de Proyectos

¿Cómo puedo enfocarme en resolver un bug, un problema, sin afectar el avance de mi equipo?

2.1 Propuestas de Proyectos

Como profesionales, proponer es una de las habilidades más importantes para crecer dentro de una empresa.

2.1 Propuestas de Proyectos

Por ello, en GIT, existen las ramas, también conocidos como "branches".

2.2 Ramas

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.

2.2 Ramas

2.2 Ramas

2.2 Ramas

2.2 Ramas

2.2 Ramas

2.2 Ramas

2.2 Ramas

El concepto HEAD

¿En qué punto de la historia de nuestro proyecto nos encontramos?

2.2 Ramas

Practiquemos ramas

git branch [nombre]

2.2 Ramas

git log --oneline --graph --all

git config --global alias.nicelog 'log --oneline --graph --all'

2.3 Fusiones

Repitamos el proceso de la fusión

2.3 Fusiones

git checkout [branch]

2.3 Fusiones

git checkout [branch]

2.3 Fusiones

git checkout [branch]

2.3 Fusiones

Hagamos la fusión

2.3 Fusiones

Fu...

2.3 Fusiones

...sión!

2.3 Fusiones

La fusión tiene la mezcla de los cambios de ambas ramas

2.3 Fusiones

Lo mejor de ambas, establecidas por el gestor del proyecto

2.3 Fusiones

Solución de conflictos

a) Fast-Forward

b) Manual Merge

2.3 Fusiones

Solución de conflictos

Fast-Forward

Los gestores trabajaron archivos diferentes al repositorio

2.3 Fusiones

Solución de conflictos

Manual Merge

¿Qué pasa cuando 2 desarrolladores trabajan el mismo archivo en la fusión?

Dudas, preguntas y discusiones

#mejorandogit

Curso Profesional de Git y GitHub

Clase 3 - #mejorandogit

The Web connects people. That’s what it does. And movements take connected people and make change.

Roadmap

Recomendaciones

- Módulo "Bienvenidos al curso".

- Artículos + Videos + Discusiones.

- Lean los 2 módulos anteriores

[En vivo]

Preguntas a #mejorandogit

[Diferido]

Al sistema de discusiones ó un DM

Objetivo Principal

1) Crear un repositorio en GitHub y vincularlo en local.

2) Subir nuestro portafolio a nuestro repositorio "forked" en GitHub.

Empecemos con el contexto

1) GitHub & Workflows

2) Repositorios propios

3) Repositorios "forked"

GitHub

Es una plataforma social para construir proyectos web.

Workflows

Flujos de trabajo colaborativos.

Workflows

¿Cómo logro que varios profesionales web trabajen sobre un mismo proyecto, sin morir en el intento?

Workflows

Exploración: Git Clone

$ git clone [https or SSH]

$ git log (comprobar commits)

Git Clone

Git Clone

Git Clone

GitHub Workflows

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

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

2) Repositorios propios (Yo + mi equipo)

- 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

GitHub Workflows

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

Curso Profesional de Git y GitHub

Clase 4 - #mejorandogit

Hidden ideas don't ship, have no influence, no intersection with the market. They die, alone. Ideas don't need a passport, and often cross borders (of all kinds) with impunity. Show your ideas

Roadmap

Recomendaciones

- Módulo "Bienvenidos al curso".

- Artículos + Videos + Discusiones.

- Lean los 3 módulos anteriores

[En vivo]

Preguntas a #mejorandogit

[Diferido]

Al sistema de discusiones ó un DM

Objetivo Principal

- 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.

Empecemos con el contexto

1) Deployment.

2) Ambientes

3) GitHub Pages.

4) Manual Deployment

1) Deployment

Es la manera de llevar tus proyectos al mundo

1) Deployment

Todas las actividades que hacen a un proyecto de software disponible para su uso

1) Deployment

2) Ambientes

2) Ambientes Óptimos

2) Ambientes FTP

- 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.

3) GitHub Pages

3) GitHub Pages

3) GitHub Pages

4) Manual Deployment

4) Manual Deployment

4) Manual Deployment

4) Manual Deployment

4) Manual Deployment

4) Manual Deployment

SSH

Secure Shell

Autenticación - "Are you the owner?"

Curso Profesional de Git y GitHub

Clase 5 - #mejorandogit

El tiempo es el activo más valioso, no el dinero.

Automaticen y enfóquense en lo importante.

Roadmap

Recomendaciones

- Módulo "Bienvenidos al curso".

- Artículos + Videos + Discusiones.

- Lean los 4 módulos anteriores

[En vivo]

Preguntas a #mejorandogit

[Diferido]

Al sistema de discusiones ó un DM

Temario

- Shell Scripts (.sh)

- Git Hooks

- Automatic Deployment

- Deploy Total en Server

Shell Scripts

Serie de comandos encapsulados dentro de un archivo .sh

Shell Scripts

Shell Scripts

Git Hooks

Son scripts que se ejecutan antes, durante ó después de realizar un movimiento con GIT.

Estos scripts son archivos ".sh".

Git Hooks

Git consta de 17 hooks

Git Hooks

Documentación Completa y Actualizada

https://github.com/git/git/blob/master/Documentation/githooks.txt

Git Hooks

Git consta de 17 hooks

Git Hooks

post-commit

Después de generar un commit, genera estos comandos.

Git Hooks - post-commit

Git Hooks (ejemplo)

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

Automatic Deployment

El manual deployment, automatizado.

Automatic Deployment

- 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.

Deploy total en Server

Si por una circunstancia extrema, no puedes usar GitHub.

Para este caso, existen los "bare repositories"

Deploy total en Server

Un "bare repository" únicamente guarda el historial de cambios, con todos sus archivos, pero no pueden editarlos como tal.

Deploy total en Server

Deploy total en Server

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.

Deploy total en Server

Deploy total en Server

Deploy total en Server

Deploy total en Server

¿Qué les pareció el curso?

En twitter, #mejorandogit