Git avanzado
Temario
- Propósito y alcance
- Arquitectura
- Componentes fundamentales
- Operaciones CRUD
- Operaciónes de organización de código
- Gestión de ramas y etiquetas
- Resolución de conflictos
- Integración con Maven
- Configuración de GIT
- Introducción a GIT en el lado servidor
- Programas cliente para operar con GIT
Conceptos iniciales
Conceptos iniciales
-
Qué es el control de versiones
-
VCS centralizados / distribuidos
-
CLI vs GUI
-
Branching
Instalación
Instalación
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 mario@mariogl.com
Fundamentos de Git
Fundamentos de Git
-
Snapshots (commits)
-
Repositorio
-
Working directory
-
Stage/cache
Fundamentos de Git
-
Referencias
-
Ramas
-
HEAD
-
Tags
-
- .gitignore
Commits
Preparando el commit
-
Añadir nuevos archivos al índice con git add (empezar a versionar)
-
Quitar del índice (desversionar) con git rm --cached
-
Añadir modificaciones al staging area con git add
-
Ver el staging area con git status
-
Quitar archivos o modificaciones del staging area con git reset HEAD
-
Hacer el commit con git commit [-m]
-
Modificar el último commit con git commit --amend
-
Deshacer cambios del Working Directory con git checkout --
Preparando el commit
El commit
-
Hash SHA-1
-
Autor / commiteador
-
Fecha
-
Mensaje
-
Padre/s
El log
-
git log para ver el histórico de commits
-
Referencias en el log
-
Ver el log compacto con git log --oneline
-
Ver un commit con git show
-
Cómo referenciar a un commit
-
SHA-1
-
HEAD^
-
HEAD~
-
HEAD@{n}
-
El log
-
Saltar a otro commit o rama con git checkout
-
Borrar commits con git reset
-
Ver el histórico de HEADs con git reflog
-
Apartar cambios provisionalmente con git stash
-
git stash [push]
-
git stash list
-
git stash show stash@{n} -v
-
git stash apply [stash@{n}]
-
git stash pop [stash@{n}]
-
git stash drop [stash@{n}]
-
Branching
Ramas
Ramas
-
Referencia
-
La rama master
-
Listar ramas
-
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
-
Mezclar dos ramas con git merge (simulación)
-
Mezclar dos ramas con git rebase (simulación)
-
Aplicar un commit de otra rama con cherry-pick -x
El modelo git flow
-
master branch
-
develop branch
-
feature branch
-
bugfix branch
-
hotfix branch
-
release branch
El programa git flow
-
git flow init
-
git flow tipo_rama start nombre_rama
-
git flow finish
Repositorios remotos
Repositorios online
Repositorios remotos
-
Clonar con git clone
-
Los remotes: el remote origin
-
Añadir un remote con git remote add
-
Renombrar un remote con git remote rename
-
Borrar un remote con git remote remove
-
Cambiar la URL de un remote con git remote set-url
-
Tracking branch
Repositorios remotos
-
Enviar cambios al repositorio remoto con git push
-
Sincronizar mi copia local del remoto con git fetch
-
Mergear cambios del remoto con git merge
-
git fetch + git merge = git pull
-
Borrar ramas del remoto
-
Marcar ramas remotas borradas con git fetch --prune
-
Ver lo que voy a enviar en el push con
git diff origin/master master
GUI
GUI para Git
-
Git GUI (instalada con Git)
GUI para Git
GUI para Git
GUI para Git
GUI para Git
-
Plugin EGit para Eclipse
Git & Maven
Git & Maven
-
Añadir al .gitignore los directorios de builds y de dependencias (ejemplo)
-
Si hay jerarquía de repositorios: git submodule
-
git submodule add URL
-
git clone URL --recurse-submodules
o
git clone URL
git submodule init
git submodule update
-
Pull Requests
Pull Requests
-
En equipos grandes
-
Los miembros no pueden mergear sus ramas a develop
-
Se solicita el merge a través de la interfaz del servidor
-
Hay un encargado (o varios) de revisar las peticiones de PR, y de realizar el merge de las ramas a develop.
Links
Git avanzado
By mariogl
Git avanzado
Curso Git avanzado Madrid 17-18 septiembre 2018
- 774