Controla tu código, controla tu vida! – Git & GitHub – Empecemos con...



Controla tu código, controla tu vida! – Git & GitHub – Empecemos con...

1 0


GitPresentacion

Presentación para el Curso de Git en ITESM

On Github lmrarturo / GitPresentacion

Controla tu código, controla tu vida!

Git & GitHub

Created by Arturo Mendoza / @lmrarturo

Objetivo

Crear proyectos bajo un control de versiones de manera profesional.

Roadmap

Empecemos con...

  • Instalación
  • Control de Versiones
  • ¿Qué es Git?
  • Arquitectura de Árbol
  • Configuración Git

Instalación

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

b )Escoja dependiendo de Windows, Mac, Linux

Control de Versiones

Control de Versiones

Todo lo que modificas en tu proyecto lo registran y guardan

Control de Versiones

Tienes acceso a cada registro y puedes gestionarlo, colaborarlo, compartirlo, editarlo, etc.

Control de Versiones

Podrás viajar en el tiempo entre tus registros en diferentes momentos del proyecto.

Ahora vamos con...

  • Proponer proyectos
  • Ramas (Branches)
  • Fusiones (Merge)

Propuesta de Proyectos

Quiero intervenir en un proyecto ¿Cómo lo puedo hacer sin afectarlo?

Propuesta de Proyectos

Existe un bug ¿Cómo lo resuelvo son afectar el avance de mi equipo?

Propuesta de Proyectos

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

Propuesta de Proyectos

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

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.

Ramas / Fusión

Ramas / Fusión

Ramas / Fusión

Ramas / Fusión

Ramas / Fusións

Ramas / Fusión

Ramas / Fusión

Nos ayudará a saber en qué tiempo nos encontramos.

Ramas / Fusión

Practiquemos!

Ramas / Fusión - Practicando

git branch [nombre]

Ramas / Fusión - Practicando

Ramas / Fusión - Practicando

git checkout [branch]

Ramas / Fusión - Practicando

git checkout [branch]

Ramas / Fusión - Practicando

git checkout [branch]

Ramas / Fusión - Practicando

Hagamos la fusión

Ramas / Fusión - Practicando

Fusionado!

Ramas / Fusiones

git log --oneline --graph --all

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

Fusión - Tipos

a) Fast-Forward b) Manual Merge

Fusión - Fast-Forward

Los desarrolladores trabajaron en archivos diferentes para fusionar en el repositorio.

Fusión - Manual Merge

¿Qué pasa cuando dos desarrolladores o más trabajan en un mismo archivo para fusionar?

Ramas / Fusión

¿Preguntas?

¡Genial! Ahora vamos a:

  • Crear un repositorio en GitHub y vincularlo en local
  • Subir nuestro portafolio a nuestro repositorio "forked" en GitHub

Github - Contexto

  • GitHub & Workflows
  • Repositorios Propios
  • Repositorios "forked"

¿Qué es GitHub?

Plataforma social para construir proyectos de código.

GitHub

Workflows

Flujos de trabajo COLABORATIVOS

Workflows

¿Cómo logro que varios profesionales de código trabajen en un mismo proyecto sin morir en el intento?

Workflows

GitHub - "Git Clone"

$ git clone [https or SSH]

$ git log (comprobar commits)

GitHub - "Git Clone"

GitHub - "Git Clone"

GitHub - "Git Clone"

GitHub - Workflows (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

Conexión SSH y HTTPS

SSH (Secure SHell): Protocolo seguro para intercambio de información cifrada a tráves de la terminal.

HTTPS (Hypertext Transfer Protocol Secure): Protocolo HTTP pero seguro...

SSH Configuración

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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

Repositorios Propios (Yo + 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

Repositorios "Forked" (De terceros)

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

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.

$ 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

¿Dudas?

Envíen sus portafolio y su opinión del curso a #controlatucodigo y @lmrarturo

THE END

- Visita mi Blog arturomendoza.me - Sígueme en Twitter @lmrarturo

¡Gracias!

Controla tu código, controla tu vida! Git & GitHub Created by Arturo Mendoza / @lmrarturo