Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout...

48
Git avanzado Git avanzado

Transcript of Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout...

Page 1: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Git avanzadoGit avanzado

Page 2: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

TemarioTemarioPropósito y alcanceArquitecturaComponentes fundamentalesOperaciones CRUDOperaciónes de organización de códigoGestión de ramas y etiquetasResolución de conflictosIntegración con MavenConfiguración de GITIntroducción a GIT en el lado servidorProgramas cliente para operar con GIT

Git avanzado

Page 3: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Conceptos inicialesConceptos iniciales

Git avanzado

Page 4: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Git avanzado

Page 5: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Conceptos iniciales

Qué es el control de versionesVCS centralizados / distribuidosCLI vs GUIBranching

Git avanzado

Page 6: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

InstalaciónInstalación

Git avanzado

Page 7: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Instalación 

Notepad++

Marcar o asegurarse de que está marcado:Git Bash HereUse Notepad++ as Git's default editorUse Git from the Windows Command PromptCheckout Windows-style, commit Unix-style etc.Use MinTTY

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 8: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Instalación 

Notepad++

Marcar o asegurarse de que está marcado:Git Bash HereUse Notepad++ as Git's default editorUse Git from the Windows Command PromptCheckout Windows-style, commit Unix-style etc.Use MinTTY

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 9: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Instalación 

Notepad++

Marcar o asegurarse de que está marcado:Git Bash HereUse Notepad++ as Git's default editorUse Git from the Windows Command PromptCheckout Windows-style, commit Unix-style etc.Use MinTTY

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 10: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Instalación 

Notepad++

Marcar o asegurarse de que está marcado:Git Bash HereUse Notepad++ as Git's default editorUse Git from the Windows Command PromptCheckout Windows-style, commit Unix-style etc.Use MinTTY

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 11: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Instalación 

Notepad++

Marcar o asegurarse de que está marcado:Git Bash HereUse Notepad++ as Git's default editorUse Git from the Windows Command PromptCheckout Windows-style, commit Unix-style etc.Use MinTTY

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 12: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Instalación 

Notepad++

Marcar o asegurarse de que está marcado:Git Bash HereUse Notepad++ as Git's default editorUse Git from the Windows Command PromptCheckout Windows-style, commit Unix-style etc.Use MinTTY

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 13: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Configuración inicial

Configuración proxy:git config --global http.proxy http://username:password@host:portgit config --global https.proxy http://username:password@host:port

Configuración usuario:git config --global user.name "Mario González"git config --global user.email [email protected]

Git avanzado

Page 14: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Fundamentos de GitFundamentos de Git

Git avanzado

Page 15: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Fundamentos de Git

Snapshots (commits)RepositorioWorking directoryStage/cache

Git avanzado

Page 16: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Fundamentos de Git

ReferenciasRamasHEADTags

.gitignore

Git avanzado

Page 17: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

CommitsCommits

Git avanzado

Page 18: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Preparando el commit

Añadir nuevos archivos al índice con git add (empezara versionar)Quitar del índice (desversionar) con git rm --cachedAñadir modificaciones al staging area con git addVer el staging area con git statusQuitar archivos o modificaciones del staging area congit reset HEADBorrar archivosHacer el commit con git commit [-m]Modificar el último commit con git commit --amendDeshacer cambios del Working Directory con gitcheckout -- 

Git avanzado

Page 19: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Preparando el commit

Simulación Working Directory -> Stage -> RepositorioSimulación commits y referenciasSimulación detached HEAD

Git avanzado

Page 20: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

El commit

Hash SHA-1Autor / commiteadorFechaMensajePadre/s

Git avanzado

Page 21: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

El log

git log para ver el histórico de commitsReferencias en el logVer el log compacto con git log --onelineVer un commit con git showCómo referenciar a un commit

SHA-1HEAD^HEAD~HEAD@{n}

Git avanzado

Page 22: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

El log

Saltar a otro commit o rama con git checkoutBorrar commits con git resetVer el histórico de HEADs con git reflogApartar cambios provisionalmente con git stash

git stash [push]git stash listgit stash show stash@{n} -vgit stash apply [stash@{n}]git stash pop [stash@{n}]git stash drop [stash@{n}]

Git avanzado

Page 23: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

BranchingBranching

Git avanzado

Page 24: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Ramas

Git avanzado

Page 25: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Ramas

ReferenciaLa rama masterListar ramasCrear una rama con git branchIr a una rama con git checkoutCrear rama e ir a ella con git checkout -bBorrar una rama con git branch -dRenombrar una rama con git branch -mMezclar dos ramas con git merge ( )Mezclar dos ramas con git rebase ( )Aplicar un commit de otra rama con cherry-pick -x

simulaciónsimulación

Git avanzado

Page 26: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

El modelo git flow

master branchdevelop branchfeature branch

bugfix branchhotfix branchrelease branch

Git avanzado

Page 27: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

El modelo git flow

master branchdevelop branchfeature branch

bugfix branchhotfix branchrelease branch

Git avanzado

Page 28: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

El programa git flow

git flow initgit flow tipo_rama start nombre_ramagit flow finish

Git avanzado

Page 29: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

RepositoriosRepositoriosremotosremotos

Git avanzado

Page 30: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Servidores GIT - repositorios remotos

/ Team Foundation Server

GitHubBitbucketGitLabAzure DevOps

Git avanzado

Page 31: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Repositorios remotos

Clonar con git cloneLos remotes: el remote originAñadir un remote con git remote addRenombrar un remote con git remote renameBorrar un remote con git remote removeCambiar la URL de un remote con git remote set-urlTracking branch

Git avanzado

Page 32: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Repositorios remotos

Enviar cambios al repositorio remoto con git pushSincronizar mi copia local del remoto con git fetchMergear cambios del remoto con git mergegit fetch + git merge = git pullBorrar ramas del remotoMarcar ramas remotas borradas con git fetch --pruneConfigurar prune por defecto: git config [--global] fetch.prune trueVer lo que voy a enviar en el push: git diff origin/master master

Git avanzado

Page 33: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUIGUI

Git avanzado

Page 34: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUI para Git

Git GUI (instalada con Git)

Git avanzado

Page 35: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUI para Git

TortoiseGit

Git avanzado

Page 36: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUI para Git

SourceTree

Git avanzado

Page 37: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUI para Git

GitKraken

Git avanzado

Page 38: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUI para Git

Plugin para EclipseEGit

Git avanzado

Page 39: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

GUI para Git

Team Explorer de Visual Studio

Git avanzado

Page 40: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Git & MavenGit & Maven

Git avanzado

Page 41: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Git & Maven

Añadir al .gitignore los directorios de builds y dedependencias

 de .gitignore concreto para Java y Maven

Si hay jerarquía de proyectos/módulos: submódulosGit

GeneradorEjemplo

Git avanzado

Page 42: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Git & Maven - Submódulos

Añadir un submódulo al módulo padre:git submodule add URL

Clonar un módulo padre con sus submódulos:Método 1: git clone URL --recurse-submodulesMétodo 2: git clone URL git submodule init git submodule update

Git avanzado

Actualizar submódulos a la última versión:git submodule update --remote

Page 43: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Git & Maven - Maven SCM plugin

Integra a Maven con GitCuando hacemos una release con Maven, tambiénañade un commit y un tag al repositorio GitNos permite lanzar comandos Git en cualquier faseConfiguración en el pom.xml:

Git avanzado

<project ...> ... <scm> <url>https://bitbucket.org/git-madrid-4/facturas/src/master</url> <connection>scm:git:https://[email protected]/git-madrid-4/facturas.git</connection> <developerConnection>scm:git:https://[email protected]/git-madrid-4/facturas.git</deve </scm> ... </project>

Page 44: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Pull RequestsPull Requests

Git avanzado

Page 45: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Pull Requests

En equipos grandesLos miembros no pueden mergear sus ramas adevelopSe solicita el merge a través de la interfaz del servidorHay un encargado (o varios) de revisar las peticionesde PR, y de realizar el merge de las ramas a develop.

Git avanzado

Page 46: Git avanzado - mariogl.com€¦ · Crear una rama con git branch Ir a una rama con git checkout Crear rama e ir a ella con git checkout -b Borrar una rama con git branch -d Renombrar

Pull Requests

En equipos grandesLos miembros no pueden mergear sus ramas adevelopSe solicita el merge a través de la interfaz del servidorHay un encargado (o varios) de revisar las peticionesde PR, y de realizar el merge de las ramas a develop.

Git avanzado