git

John Cardozo

John Cardozo

git

qué es git?

Git es un sistema de control de versiones distribuido

Controla los cambios hechos por los usuarios en un proyecto a través del tiempo

Registra cambios y permite volver a una versión anterior

Orientado a trabajo colaborativo

Aporta flexibilidad al trabajo en equipo

arquitectura de git

Server

Working Copy

Local Repository

Remote Repository

Working Copy

Local Repository

Working Copy

Local Repository

push

pull

commit

instalación y configuración

git config --global user.name "John Cardozo"
git config --global user.email "johncardozo@gmail.com"

Configuración global

git config --local user.name "John Cardozo"
git config --local user.email "johncardozo@gmail.com"

Configuración por repositorio

Sitio oficial de descargas de Git

git config --list

Consultar la configuración de Git

áreas de git

Working Directory

Staging Area

Local Repository

Remote Repository

Directorio de trabajo en la máquina de desarrollo. Zona en la cual se agregan, editan y eliminan archivos y directorios

Zona en la cual se encuentran los archivos y directorios que se publicarán en el repositorio local

Repositorio local donde se encuentran los archivos y directorios que se publicarán en el repositorio remoto

Repositorio remoto donde se encuentran los archivos y directorios publicados por todos los usuarios

add

commit

push

LOCAL

REMOTO

acciones en git

Staging Area

Local Repository

Remote Repository

Working Directory

Modificaciones al proyecto en el espacio de trabajo

acciones en git - add

Staging Area

Local Repository

Remote Repository

Working Directory

add

acciones en git - commit

Staging Area

Local Repository

Remote Repository

commit

Working Directory

add

acciones en git - commit -a

Staging Area

Local Repository

Remote Repository

Working Directory

commit -a

add

commit

acciones en git - reset file

Working Directory

Staging Area

Local Repository

Remote Repository

reset <file>

add

commit

commit -a

acciones en git - reset commit

Working Directory

Staging Area

Local Repository

Remote Repository

reset <commit>

commit -a

reset <file>

add

commit

acciones en git - push

Working Directory

Staging Area

Local Repository

Remote Repository

push

commit -a

reset <file>

reset <commit>

add

commit

acciones en git - fetch

Working Directory

Staging Area

Local Repository

Remote Repository

push

commit -a

reset <file>

reset <commit>

add

commit

fetch

acciones en git - fetch

Working Directory

Staging Area

Local Repository

Remote Repository

push

commit -a

reset <file>

reset <commit>

add

commit

checkout

fetch

acciones en git - pull

Working Directory

Staging Area

Local Repository

Remote Repository

push

commit -a

reset <file>

reset <commit>

pull

add

commit

fetch

checkout

acciones en git - clone

Working Directory

Staging Area

Local Repository

Remote Repository

push

commit -a

reset <file>

reset <commit>

add

commit

fetch

checkout

pull

clone

inicio de git: clone

Repositorio remoto

No existe repo local, crea repo remoto y lo clona localmente

workspace

repo remoto

repo

local

clone

git clone https://jc@bitbucket.org/gc/test.git

Clonar un repo remoto

Esta instrucción clona un repo remoto a un repo local y crea el folder del workspace

inicio de git: init & add remote

Proyecto iniciado

Crea un repo local y lo enlaza con un repo remoto

workspace

repo

local

add remote

git init

Inicializar el repo local

git remote add origin https://jc@bitbucket.org/gc/test.git

Asociar el repo local con el repo remoto

Inicializa un repo local en un folder (workspace)

Asocia el repo local con un repo remoto

repo remoto

workflow de una sola persona

Se asume que ya hay un repo remoto asociado

workspace

repo

local

# Agrega todos los cambios hechos
git add .

Modificar en el workspace

repo remoto

1

Agregar los cambios al Stage

2

# Agregar por nombre de archivo
git add index.html

También se puede ejecutar:

git commit -m "Mensaje descriptivo"

Publicar los cambios en el repo local

3

git push origin master

Publicar los cambios en el repo remoto

4

Comandos git - local

Working Directory

Staging Area

Local Repository

add

# Agrega un archivo específico
git add nombre-archivo

# Agrega todos los cambios
git add .

reset

# Recupera un archivo específico
git reset nombre-archivo

# Recupera todos los cambios
git reset .

commit

git commit -m "Mensaje descriptivo"

checkout

git checkout nombre-archivo

Origen

Destino

principales servicios en la nube

Github

Gitlab

Bitbucket

Repos públicos y privados

Gratis

Microsoft

Gitlab

Atlassian

Integración con otros servicios

Consola web

CI /CD

Documentación basada en Wiki

Issue tracker

Code review

Discusiones de código

Pull request

autenticación ssh

Github

Gitlab

Bitbucket

Microsoft

Gitlab

Atlassian

autenticación ssh en github - windows

Creación de directorio .ssh

c:\Users\User\.ssh

Generación de llave ssh

ssh-keygen -o -t rsa -C "john@example.com"

id_rsa

id_rsa.pub

Llave pública

Llave privada

Abrir la llave pública y copiar su contenido

code id_rsa.pub

Abrir SSH Key en Github

Settings > SSH and GPG Keys

ssh-rsa AAAAB8NzaC1yc2EAAAADAQA111BgQC1xbavJmJeS9x35Elg+dTOlD3eEJaOsOZPfmnJO6FgsB98OFALxvtG0uuOMNi8FgY6jl92eBG/ZAJ/+k8yNL/gfmuW5amT9Ca8ZW6XEBA3ONCWM1DbDRDvu7Ht9DZAp72ID/ugkK6d18d0fFQteOUJwztE5flW42P73r7R8GrQcOvhN78SQGU5ZVcyi7d6yIcN13ZM4M2bHJxQP1l8qzVafvNuPA9UMtf0b7rRr1iPoxlMTo7C34COqsuFXnDct4G7wvh7/kwv6GHsejK2b8Vn9lTPf7a1k5uKeqL+y2MX4ws5rRiR3Qti5kebHUhh0DPErBErtdGl307x2bB3taWbTWIX9UCEcGwlOu3pC/gLYjbkRZmbWNxvzNqQHgV/SBcAc17PBNmoAur9hUM+DRIDtp7HFQKiAHa8rgs/f54w7AfQAJM3BpJi0771wUsm2KEcw9koMdEtMU0ETq5zvabcoagQ+FgFD97eYaawNRYVGqB/kl8YvWXRBJnbP1IDwtc= john@example.com

New SSH Key

Pegar la llave pública

1

2

3

4

git workflows

Centralized Workflow

Master

Hotfix

Release

Develop

Feature

Feature

v0.1

v1.0

v1.1

v0.2

Git Workflow (gitflow)

Master

Hotfix

Release

Develop

Feature

Mantiene la versión oficial en producción de la aplicación

Permite hacer cambios urgentes a la versión en producción

Permite hacer cambios en el código antes de hacer la publicación en producción

Brinda a los programadores un espacio de trabajo sin afectar la aplicación en producción

Permite desarrollar cada característica del software sin afectar el trabajo de los demás programadores

gitflow: branches

Master

Hotfix

Release

Develop

Feature

gitflow

Inicio del repositorio: rama Master

v0.1

Master

Hotfix

Release

Develop

Feature

gitflow

A partir de la rama Master, se crea la rama Develop en la cual trabajan los programadores

v0.1

Master

Hotfix

Release

Develop

Feature

gitFLOW

Cuando se desea desarrollar una nueva funcionalidad, el programador crea una rama Feature a partir de la rama Develop

v0.1

Master

Hotfix

Release

Develop

Feature

gitFLOW

Otros desarrolladores pueden estar trabajando en otras características de la aplicación en sus respectivas ramas Feature

Feature

v0.1

Master

Hotfix

Release

Develop

Feature

Cuando un programador termina su trabajo, fusiona su rama Feature con la rama Develop

Feature

v0.1

gitFLOW

Master

Hotfix

Release

Develop

Feature

Esta operación se repite para todos los programadores en cada una de sus ramas Feature

Feature

v0.1

gitFLOW

Master

Hotfix

Release

Develop

Feature

Cuando todos los desarrolladores han hecho sus aportes a la rama Develop, se crea una rama Release donde se hacen ajustes para publicar en producción

Feature

v0.1

gitFLOW

Master

Hotfix

Release

Develop

Feature

Una vez terminados los cambios en la rama Release, se hace una fusión con la rama Develop para reflejar todos los cambios realizados

Feature

v0.1

gitFLOW

Master

Hotfix

Release

Develop

Feature

Posteriormente, se hace una fusión de la rama Release a la rama Master para publicar la aplicación

Feature

v0.1

v1.0

gitFLOW

Master

Hotfix

Release

Develop

Feature

Si hay que hacer algún cambio urgente en producción se crea la rama Hotfix

Feature

v0.1

v1.0

gitFLOW

Master

Hotfix

Release

Develop

Feature

Una vez finalizados los cambios urgentes, se hace fusión de la rama Hotfix a la rama Release para publicar la aplicación

Feature

v0.1

v1.0

v1.0.1

gitFLOW

Master

Hotfix

Release

Develop

Feature

Para integrar el cambio urgente con el código de la aplicación, se hace una fusión de la rama Hotfix a la rama Develop

Feature

v0.1

v1.0

gitFLOW

v1.0.1

Master

Hotfix

Release

Develop

Feature

Se pueden generar cambios urgentes en cualquier momento y siempre se debe hacer fusión con las ramas Master y Develop

Feature

v0.1

v1.0

v0.2

gitFLOW

v1.0.1

john cardozo

johncardozo@gmail.com

Made with Slides.com