Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Git avanzadoGit avanzado
Git avanzado
1. 2. 3. 4. 5. 6. 7. 8. 9.
ConceptosConfiguraciónFundamentos y arquitectura interna de GitCommitsConflictosBranchingRepositorios remotosPull RequestsEnlaces de interés
Índice
Conceptos inicialesConceptos iniciales
Git avanzado
Git avanzado
Conceptos iniciales
Qué es el control de versiones
Git avanzado
Conceptos iniciales
Qué es el control de versiones
Git avanzado
Conceptos iniciales
Qué es el control de versiones
Git avanzado
Conceptos iniciales
Qué es el control de versiones
Git avanzado
Conceptos iniciales
Qué es el control de versiones
Git avanzado
Conceptos iniciales
Qué es el control de versiones
Git avanzado
develop
Conceptos iniciales
Qué es el control de versiones
Git avanzado
develop
experimento
Conceptos iniciales
Qué es el control de versiones
Git avanzado
develop
experimento
Conceptos iniciales
Qué es el control de versiones
Git avanzado
develop
experimento
develop
Conceptos iniciales
Qué es el control de versiones
Git avanzado
proyecto
Conceptos iniciales
Qué es el control de versionesVCS centralizados / distribuidosLínea de comandos vs. interfaces gráficasBranching
Git avanzado
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
Conceptos iniciales
Git avanzado
master develop
feature
feature2
ConfiguraciónConfiguración
Git avanzado
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
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 saltos de línea: git config --global core.autocrlf true (Windows) git config --global core.autocrlf input (UNIX)
Fundamentos yFundamentos yarquitectura internaarquitectura interna
de Gitde Git
Git avanzado
Fundamentos de Git
Git avanzado
Fundamentos de Git
Working directory
Git avanzado
Fundamentos de Git
Working directoryRepositorio
Git avanzado
Fundamentos de Git
Working directoryRepositorio
Git avanzado
Working directoryRepositorio
(.git)
Fundamentos de Git
Working directoryRepositorio
Git avanzado
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Working directory
Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)
Git avanzado
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio local
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.javaarchivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
archivo2.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
archivo2.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
archivo2.java archivo2.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
archivo2.java archivo2.javaarchivo2.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
archivo2.java archivo2.java
Fundamentos de Git
Working directoryRepositorioCommits (snapshots)Stage
Git avanzado
Working directory Repositorio localStage
archivo1.java archivo1.java
archivo1.java
archivo2.java archivo2.java
archivo1.javaarchivo2.java
Fundamentos de Git
ReferenciasHEADRamasTags
Git avanzado
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
Fundamentos de Git
Ignorar archivos y carpetas con .gitignore y conexcludeGenerador de .gitignore
Git avanzado
CommitsCommits
Git avanzado
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 statusBorrar archivos: git rm pathSacar un archivo del repositorio sin borrarlo en el WorkingDirectory (desversionar): git rm --cached pathAñadir modificaciones concretas dentro de un mismo archivo: git add --patch
Git avanzado
Preparando el commitQuitar modificaciones del stage: git reset HEAD <path> git restore --staged <path> (experimental)Deshacer cambios del Working Directory: (operación irreversible) git checkout -- <path> git restore <path> (experimental)
Git avanzado
Preparando el commit
Git avanzado
Hacer el commit: git commit [-m "Mensaje"]
Preparando el commit
Git avanzado
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>
Preparando el commit
Git avanzado
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
��
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
��
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
��
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
��
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
��
�
�
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...
Preparando el commit
Git avanzado
�
�
�
��
�
��
https://bitbucket.org/omitsis-team/devops-deploy/commits/https://medium.com/nickonsoftware/twenty-one-ways-to-be-a-crappy-software-developer-c69e4b39c5df#1471
Preparando el commit
Git avanzado
Hacer el commit: git commit [-m "Mensaje"]Cambiar el editor por defecto: git config [ámbito] core.editor <nombre-editor>Evitar mensajes genéricos como "Cambios", "Nuevoarchivo", "Correcciones", "CSS", "Merge"...Aislar pocos cambios en cada commit ( )ejemplo
Preparando el commit
Git avanzado
Preparando el commitModificar el último commit: git commit --amendNo hacer --amend si el commit ya se había subido alremoto
Git avanzado
El commit
Autor / commiteadorFechaMensajePadre/sHash SHA-1
Git avanzado
- Ejercicio 1 -
El log
Cómo referenciar a un commitPor su identificador: hash SHA-1Por el nombre de una ramaPor el nombre de una tagPor su posición relativa: HEAD^, develop^2, e873Xc9^^... HEAD~, develop~2, e873Xc9~~...Por su posición en el listado de reflog: HEAD@{n}
Ver el contenido de un commit: git show <commit>
Git avanzado
El log
Git avanzado
Ver el histórico de commits: git log [referencia]Ver el log compacto: git log --onelineVer el log de todas las referencias: git log --allVer ramificaciones en el log: git log --graph
El log
Git avanzado
oneline + fecha + autor Crear un alias: git config --global alias.milog "log --oneline --graph --all"Mostrar los cambios en los commits: git log --patch
git log --date=short --pretty=format:"%C(yellow)%h%Creset%C(red)%C(bold)%d%Creset%C(whit1
El log
Git avanzado
Filtrar el log por fechas: git log --since=<fecha> --until=<fecha>Filtrar el log por autor/commiteador: git log --author=<nombre> | --committer=<nombre>Ver el log de un archivo: git log <archivo>Ver el log de unas líneas: git log -L <inicio>,<fin>:<archivo>Ver un rango de commits: git log <commit1>..<commit2>Ver un archivo en otro commit (o rama): git show <referencia>:<archivo>Ver las diferencias en un archivo: git show <referencia> <archivo>
El log
Git avanzado
Buscar en qué commit se introdujo un bug: git bisect
Comenzamos: git bisect startMarcamos el commit actual como versión con bug: git bisect badMarcamos un commit antiguo como versión sin bug: git bisect good <commit>A partir de aquí, vamos diciendo si está bien o mal: git bisect bad o git bisect good
El log
Saltar a otro commit o rama: git checkout <commit o rama>Borrar commits: git reset <commit> [--soft|--mixed|--hard]Ver todos los movimientos de las referencias: git reflogCulpar: git blame <path>Revertir: git revert <commit>
Git avanzado
�
El stash
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
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
Reescritura del histórico
Git avanzado
Modificar el último commit: git commit --amendBorrar commits: git resetComprimir varios commits en uno: git reset --soft + git commitVarios cambios de golpe: git rebase -i
- Ejercicio 2 -
ConflictosConflictos
Git avanzado
Conflictos
Git avanzado
Cuando hay dos versiones de código y Git no puededecidir cuál es la definitiva
Conflictos
Git avanzado
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...)
Conflictos
Git avanzado
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, pull
Conflictos
Git avanzado
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 gitstatus
Conflictos
Git avanzado
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ón
Conflictos
Git avanzado
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
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
<<<<<<< HEAD ↑ // Código del commit o rama // adonde apunta el HEAD ↓ ======= ↑ // Código del commit o rama // que estoy intentando fusionar con HEAD ↓ >>>>>>> develop
Conflictos
Git avanzado
Conflictos
Git avanzado
Conflictos
Git avanzado
Conflictos
Git avanzado
Conflictos
Git avanzado
Conflictos
Git avanzado
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
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
BranchingBranching
Git avanzado
Ramas
Git avanzado
Ramas
Git avanzado
Ramas
Git avanzado
Ramas
Git avanzado
Ramas
ReferenciaLa rama masterMúltiples ramas
Git avanzado
Ramas
Listar ramas: git branchCrear una rama: git branch nombre_rama [commit]Borrar una rama: git branch -d/-D nombre_ramaRenombrar una rama: git branch -m nombre_antiguo nombre_nuevo
Git avanzado
Ramas
Ir a una rama: git checkout nombre_rama git switch nombre_ramaCrear rama e ir a ella: git checkout -b nombre_rama git switch -c nombre_rama
Git avanzado
Ramas - merge
Git avanzado
HEADdevelop
C1
C2
C5
C6
C7
C3
C4
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
Ramas - rebase
Git avanzado
HEADdevelop
C1
C2
C5
C6
C7
Ramas - rebase
Git avanzado
HEADdevelop
C1
C2
C5
C6
C7
C3
C4
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
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
Ramas - mover referencias
Mover una rama en la que no estoy git branch -f nombre_rama [<commit>] git switch -C nombre_rama [<commit>]Mover la rama en la que estoy git reset <commit> --hardSi sólo queremos avanzar la referencia de una ramahasta un commit más avanzado: git merge <commit>
Git avanzado
El modelo git flow
master branchdevelop branchfeature branch
bugfix branchhotfix branchrelease branch
Git avanzado
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
RepositoriosRepositoriosremotosremotos
Git avanzado
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
Repositorios remotos
Git avanzado
Clonar un repositorio remoto: git clone URL [directorio]Ver ramas remotas: git branch -rVer todas las ramas (locales y remotas): git branch -aTrackear rama: git branch --set-upstream-to nombre_remote/nombre_ramaVer ramas trackeadas: git branch -vv
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 fetch -vTraer 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 true
Git avanzado
Repositorios remotos
Borrar ramas del remoto: git push --delete <remoto> <rama>Marcar 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
Repositorios remotos
Subir una tag al remoto: git push <remote> <nombre_tag>Subir todas las tags al remoto (desaconsejado): git push <remote> --tagsSubir las tags anotadas de la rama que vamos a pushear: git push <remote> <rama> --follow-tagsConfiguración para que siempre se comporte como en elpunto anterior: git config [ámbito] push.followTags true
Git avanzado
Pull RequestsPull Requests
Git avanzado
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
Pull Requests
Git avanzado
Pull Requests
En equipos grandes
Git avanzado
Pull Requests
En equipos grandesEl repositorio remoto tiene permisos de sólo lecturaen la rama develop
Git avanzado
Pull Requests
En equipos grandesEl repositorio remoto tiene permisos de sólo lecturaen la rama developLos miembros no pueden mergear sus ramas adevelop
Git avanzado
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 servidor
Git avanzado
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
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
Links
Documentación oficial de GitLibro Pro GitGenerador de .gitignoreArtículo sobre Git FlowExplicación de git resetCómo encontrar cosas en GitPosts sobre Git en el blog
Git avanzado