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

Post on 20-May-2020

18 views 0 download

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

Git avanzadoGit avanzado

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

Conceptos inicialesConceptos iniciales

Git avanzado

Git avanzado

Conceptos iniciales

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

Git avanzado

InstalaciónInstalación

Git avanzado

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

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

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

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

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

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

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 mario@mariogl.com

Git avanzado

Fundamentos de GitFundamentos de Git

Git avanzado

Fundamentos de Git

Snapshots (commits)RepositorioWorking directoryStage/cache

Git avanzado

Fundamentos de Git

ReferenciasRamasHEADTags

.gitignore

Git avanzado

CommitsCommits

Git avanzado

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

Preparando el commit

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

Git avanzado

El commit

Hash SHA-1Autor / commiteadorFechaMensajePadre/s

Git avanzado

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

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

BranchingBranching

Git avanzado

Ramas

Git avanzado

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

El modelo git flow

master branchdevelop branchfeature branch

bugfix branchhotfix branchrelease branch

Git avanzado

El modelo git flow

master branchdevelop branchfeature branch

bugfix branchhotfix branchrelease branch

Git avanzado

El programa git flow

git flow initgit flow tipo_rama start nombre_ramagit flow finish

Git avanzado

RepositoriosRepositoriosremotosremotos

Git avanzado

Servidores GIT - repositorios remotos

/ Team Foundation Server

GitHubBitbucketGitLabAzure DevOps

Git avanzado

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

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

GUIGUI

Git avanzado

GUI para Git

Git GUI (instalada con Git)

Git avanzado

GUI para Git

TortoiseGit

Git avanzado

GUI para Git

SourceTree

Git avanzado

GUI para Git

GitKraken

Git avanzado

GUI para Git

Plugin para EclipseEGit

Git avanzado

GUI para Git

Team Explorer de Visual Studio

Git avanzado

Git & MavenGit & Maven

Git avanzado

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

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

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://mariogl@bitbucket.org/git-madrid-4/facturas.git</connection> <developerConnection>scm:git:https://mariogl@bitbucket.org/git-madrid-4/facturas.git</deve </scm> ... </project>

Pull RequestsPull Requests

Git avanzado

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

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

mario@mariogl.com

@marioglweb

Git avanzado