Upload
others
View
23
Download
0
Embed Size (px)
Citation preview
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 [email protected]
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
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://[email protected]/git-madrid-4/facturas.git</connection> <developerConnection>scm:git:https://[email protected]/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
Links
Documentación oficial de GitLibro Pro GitGit FlowArtículo sobre Git FlowExplicación de git resetSubGitCapítulo de Pro Git sobre submódulos
Git avanzado