68
Git avanzado Git avanzado

Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

  • Upload
    others

  • View
    82

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Git avanzadoGit avanzado

Page 2: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Conceptos inicialesConceptos iniciales

Git avanzado

Page 3: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Git avanzado

Page 4: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Conceptos iniciales

Qué es el control de versionesVCS centralizados / distribuidosLínea de comandos vs. interfaces gráficasBranching

Git avanzado

Page 5: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Instalación yInstalación yconfiguraciónconfiguración

Git avanzado

Page 6: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

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 MinTTYEnable Git Credential Manager

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 7: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Instalación

Git avanzado

Page 8: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Instalación

Git avanzado

Page 9: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

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 MinTTYEnable Git Credential Manager

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 10: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

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 MinTTYEnable Git Credential Manager

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 11: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

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 MinTTYEnable Git Credential Manager

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 12: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

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 MinTTYEnable Git Credential Manager

Crear una cuenta en  (con un email real)

Git

Bitbucket

Git avanzado

Page 13: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Configuración

Variables de configuraciónSistema (S.O.): git config --systemGlobal (usuario): git config --globalLocal (proyecto): git config [--local]

Guardar una variable de configuración:git config [ámbito] nombre_variable valorPor ejemplo: git config --system user.name "Mario González"

Leer una variable de configuración:git config [ámbito] nombre_variablePor ejemplo: git config --global user.name

Listar todas las variables de configuracióngit config [ámbito] --list

Archivos de configuracióngit config [ámbito] --list --show-origin

Git avanzado

Page 14: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Configuración inicial

Configuración proxy: git config --global http.proxy http://username:password@host:port git 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

Configuración Notepad++: git config --global core.editor "'C:\Program Files(x86)\Notepad++\notepad++.exe' -multiInst -notabbar -nosession -noPlugin"Configuración saltos de línea: git config --global core.autocrlf true    (Windows) git config --global core.autocrlf input   (UNIX)

Page 15: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Fundamentos yFundamentos yarquitectura internaarquitectura interna

de Gitde Git

Git avanzado

Page 16: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Fundamentos de Git

Working directoryRepositorioCommits (snapshots)Stage

Git avanzado

Page 17: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Fundamentos de Git

ReferenciasRamasHEADTags

Git avanzado

Page 18: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Fundamentos de Git

Tipos de tags:LigeraAnotada

Añadir tag ligera: git tag nombre_tag [commit]Añadir tag anotada: git tag -a nombre_tag -m "Mensaje tag" [commit]

Git avanzado

Page 19: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Fundamentos de Git

Ignorar archivos y carpetas con .gitignoreGenerador de .gitignore

Git avanzado

Page 20: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

CommitsCommits

Git avanzado

Page 21: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Preparando el commit

Añadir nuevos archivos al índice (empezar a versionar): git add <path>Añadir modificaciones al stage: git add <path>Información sobre el estado de las tres zonas: git statusQuitar modificaciones del stage: git reset HEAD <path>Deshacer cambios del Working Directory: git checkout -- <path>  (operación irreversible)

Git avanzado

Page 22: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Preparando el commitBorrar archivos: git rm pathSacar un archivo del repositorio sin borrarlo en elWorking Directory: git rm --cached path

Git avanzado

Page 23: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Preparando el commitHacer el commit: git commit [-m "Mensaje"]Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...Modificar el último commit: git commit --amendNo hacer --amend si el commit ya se había subido alremoto

Git avanzado

Page 24: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El commit

Autor / commiteadorFechaMensajePadre/sHash SHA-1

Git avanzado

Page 25: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El log

Git avanzado

Ver el histórico de commits: git log [rama]Ver el log compacto: git log --onelineVer el log de todas las ramas: git log --branchesVer ramificaciones en el log: git log --graphCrear un alias: git config --global alias.milog "log --oneline --branches--graph"Ver el contenido de un commit: git show <commit>

Page 26: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El log

Cómo referenciar a un commitPor su identificador: hash SHA-1Por su posición respecto al HEAD: HEAD^, HEAD^2... HEAD~, HEAD~2...Por el nombre de una ramaPor su posición en el listado de reflog: HEAD@{n}

Git avanzado

Page 27: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El log

Saltar a otro commit o rama: git checkout <commit o rama>Borrar commits: git reset <commit> [--soft|--mixed|--hard]Ver el histórico de HEADs con git reflogCulpar con git blame path

Git avanzado

Page 28: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El log

Apartar cambios provisionalmentegit stash [push -m "Mensaje"]git stash listgit stash show [stash@{n}] [-p]git stash apply [stash@{n}]git stash pop [stash@{n}]git stash drop [stash@{n}]

Git avanzado

Page 29: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Cómo deshacer

Git avanzado

Deshacer cambios en el Working DirectoryDeshacer subidas al stageDeshacer commitsDeshacer un commit --amendDeshacer un resetResolver problemas derivados del Detached HEADIgnorar archivos que ya están siendo versionados

Page 30: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

ConflictosConflictos

Git avanzado

Page 31: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Cuando hay dos versiones de código y Git no puededecidir cuál es la definitivaDiferencias en formato del archivo (tabulaciones,codificación, saltos de línea...)Pueden aparecer en cualquier operación que impliquefusión de código: merge, rebase, cherry-pick, pullSiempre que aparezcan conflictos, primero lanzar gitstatusGit espera a que resolvamos los conflictos y le demos laorden de cerrar la operaciónLos conflictos se delimitan por marcas en los archivos

Conflictos

Git avanzado

Page 32: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Conflictos

Git avanzado

<<<<<<< HEAD ↑ // Código del commit o rama // adonde apunta el HEAD ↓ ======= ↑ // Código del commit o rama // que estoy intentando fusionar con HEAD ↓ >>>>>>> develop

Page 33: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Si queremos resolverlos a mano, editamos el texto,borramos las marcas y dejamos el código definitivo.Para usar una interfaz gráfica específica para resolverconflictos: git mergetoolEjemplo: configurar KDiff3 git config --global merge.tool kdiff3 git config --global mergetool.kdiff3.path "C:/ProgramFiles/KDiff3/kdiff3.exe"

Conflictos

Git avanzado

Page 34: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Una vez resueltos los conflictos, se lo comunicamos a gitmediante git add pathPara terminar la fusión en un merge o en un pull: git commitPara terminar la fusión en un rebase: git rebase --continuePara terminar la fusión en un cherry-pick: git cherry-pick --continue

Conflictos

Git avanzado

Page 35: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

BranchingBranching

Git avanzado

Page 36: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas

Git avanzado

Page 37: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas

ReferenciaLa rama masterMúltiples ramas

Git avanzado

Page 38: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas

Listar ramas: git branchCrear una rama: git branch nombre_rama [commit]Ir a una rama: git checkout nombre_ramaCrear rama e ir a ella: git checkout -b nombre_ramaBorrar una rama: git branch -d/-D nombre_ramaRenombrar una rama: git branch -m nombre_antiguo nombre_nuevo

Git avanzado

Page 39: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas - merge

Git avanzado

HEADdevelop

C1

C2

C5

C6

C7

C3

C4

Page 40: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Fusionar ramasVolcar el trabajo de una rama en otraObjetivo: que una rama tenga los commits de otraTipos de merge:

Fast forward: no crea un nuevo commit, sin conflictosMerge a tres bandas: crea un nuevo commit, posibilidadde conflictos

Conflictos: lanzar siempre git status

Ramas - merge

Git avanzado

Page 41: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas - rebase

Git avanzado

HEADdevelop

C1

C2

C5

C6

C7

C3

C4

Page 42: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas - rebase

Aplicar una rama al final de otraVolcar el trabajo de una rama en otraObjetivo: que una rama tenga los commits de otraNo crea un nuevo commitConflictos por pasos: lanzar siempre git statusNo hacer rebase si ya se ha subido la rama al remoto

Git avanzado

Page 43: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas - cherry-pick

Aplicar un commit aislado a una ramaNo se aplican los commits anterioresModificador -x para que añada al mensaje "Cherry-picked from XXXX"Conflictos: lanzar siempre git status

Git avanzado

Page 44: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Ramas - mover referencias

git branch -f nombre_rama [<commit>]git reset <commit> --hardSi sólo queremos avanzar la referencia de una ramahasta un commit más avanzado: git merge rama_destino

Git avanzado

Page 45: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El modelo git flow

master branchdevelop branchfeature branch

bugfix branchhotfix branchrelease branch

Git avanzado

Page 46: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

El programa git flow

 (en Windows ya viene instalado conGit)Empezar a usar git flow en un repositorio: git flow initIniciar rama: git flow tipo_rama start nombre_ramaCerrar rama: git flow finish

Instalación

Git avanzado

Page 47: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

RepositoriosRepositoriosremotosremotos

Git avanzado

Page 48: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Servidores GIT - repositorios remotos

/ Team Foundation Server

GitHubBitbucketGitLabAzure DevOps

Git avanzado

Page 49: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Repositorios remotos

Git avanzado

Los remotes: el remote originAñadir un remote: git remote add nombre_remote URL_remoteRenombrar un remote: git remote rename nombre_actual nuevo_nombreCambiar la URL de un remote: git remote set-url nombre_remote URL_remoteBorrar un remote: git remote remove nombre_remote

Page 50: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Repositorios remotos

Git avanzado

Clonar un repositorio remoto: git clone URL [directorio]Ver ramas remotas: git branch -aTrackear rama: git branch --set-upstream-to nombre_remote/nombre_ramaVer ramas trackeadas: git branch -vv

Page 51: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Repositorios remotos

Enviar cambios al repositorio remoto: git push nombre_remote nombre_ramaTrackear la rama al hacer el push: git push -u nombre_remote nombre_ramaSincronizar mi copia local del remoto: git fetchTraer cambios del remoto: git fetch + git merge = git pull git fetch + git rebase = git pull --rebaseSi siempre queremos pull --rebase: git config --global pull.rebase trueSubir tags al remoto: git push --tags

Git avanzado

Page 52: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Repositorios remotos

Borrar ramas del remotoMarcar ramas remotas borradas:  git fetch --pruneConfigurar prune por defecto: git config [--global|--system] fetch.prune trueVer lo que voy a enviar en el push: git diff origin/master master

Git avanzado

Page 53: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Interfaces gráficasInterfaces gráficas

Git avanzado

Page 54: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

Git GUI y gitk (instaladas con Git)

Git avanzado

Page 55: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

Git GUI y gitk (instaladas con Git)

Git avanzado

Page 56: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

TortoiseGit

Git avanzado

Page 57: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

SourceTree

Git avanzado

Page 58: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

GitKraken

Git avanzado

Page 59: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

Plugin para EclipseEGit

Git avanzado

Page 60: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

GUI para Git

Team Explorer de Visual Studio

Git avanzado

Page 61: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Git & MavenGit & Maven

Git avanzado

Page 62: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Git & Maven 

Git avanzado

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

Page 63: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Git & Maven - Submódulos

Git avanzado

Añadir un submódulo al módulo padre: git submodule add URL [subcarpeta]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

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

Page 64: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Git & Maven - Maven SCM plugin

Git avanzado

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:

<project ...> ... <scm> <url>https://bitbucket.org/git-valencia-2/facturas/src/master</url> <connection>scm:git:https://[email protected]/git-valencia-2/facturas.git</connection> <developerConnection>scm:git:https://[email protected]/git-valencia-2/facturas.git</de </scm> ... </project>

Page 65: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Pull RequestsPull Requests

Git avanzado

Page 66: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Pull Requests

En equipos grandesEl repositorio remoto tiene permisos de sólo lecturaen la rama developLos miembros no pueden mergear sus ramas adevelopSe sube la rama propia de feature y se solicita elmerge 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 67: Git avanzado - Mario González · git fetch + git rebase = git pull --rebase Si siempre queremos pull --rebase: git config --global pull.rebase true Subir tags al remoto: git push

Links

Documentación oficial de GitLibro Pro GitGenerador de .gitignoreArtículo sobre Git FlowExplicación de git resetSubGitCapítulo de Pro Git sobre submódulosCómo encontrar cosas en GitPosts sobre Git en el blog

Git avanzado