3. Repaso
● Git & GitHub
● Breve historia de Git
● ¿Por qué Git/GitHub?
● Contribuyendo a un proyecto (Forking)
● Trabajo en paralelo (Branching)
● Construyendo el cambio (Commit)
● Entregar respetuosamente (Pull Request)
● Calidad en el código (Code Review)
● Uniendo el trabajo (Merge)
4. Git: The Three States
Git tiene tres estados principales en los que pueden
residir tus archivos:
Committed significa que los datos se almacenan de
forma segura en su base de datos local.
Modified significa que ha cambiado el archivo pero
aún no lo ha enviado a su base de datos.
Staged significa que ha marcado un archivo
modificado en su versión actual para ir a su próximo
commit snapshot.
5. GitFlow
Define un modelo estricto de ramificaciones (branches) diseñado
entorno a las publicaciones de un proyecto. Esto proporciona un marco
de trabajo robusto para manejar grandes proyectos.
● Ideal para proyectos con flujos de publicación cíclicos
● Asigna roles específicos a cada branch
● Define cómo y cuándo debería de interactuar con cada rama
11. Propuesta: Forking / Feature Branch
Le da a cada desarrollador su propio repositorio del lado del servidor.
Esto significa que cada colaborador no tiene uno, sino dos repositorios
Git: uno privado y uno público compartido.
● Es el modelo más usado en proyectos open-source
● Permite tener una versión simplificada de GitFlow
● Las contribuciones se pueden integrar por separado
● Evitar distribuir accesos de escritura en el repositorio principal
13. Fork / Feature Branch
Actualizar master con los
cambios en upstream
Master
(Fork)
Feature
Actualizar master
nuevamente para obtener
los cambios integrados
Push del feature branch
a origin y PR a master
en upstream
14. Instalando Git
Linux
Mediante la herramienta básica
de administración de paquetes
que trae tu distribución
# pacman -Syu git
# apt-get install git
# yum install git
OSX
En Mavericks (10.9) o superior
puedes hacer esto desde el
Terminal si intentas ejecutar git
por primera vez. Si no lo tienes
instalado, te preguntará si deseas
instalarlo.
http://git-scm.com/download/mac
Windows
Descargar el instalador, abrir el
archivo .exe con permisos de
administración y seguir las
instrucciones del asistente.
http://git-scm.com/download/win
16. Configuración
1. Archivo /etc/gitconfig: Contiene valores para todos los usuarios del sistema y todos sus
repositorios. Si pasas la opción --system a git config, lee y escribe específicamente en este
archivo.
2. Archivo ~/.gitconfig o ~/.config/git/config: Este archivo es específico a tu usuario. Puedes
hacer que Git lea y escriba específicamente en este archivo pasando la opción --global.
3. Archivo config en el directorio de Git (es decir, .git/config) del repositorio que estés
utilizando actualmente: Este archivo es específico al repositorio actual.
20. Configuración: GitHub
Copiar la llave SSH:
$ xclip -sel clip <
~/.ssh/id_rsa.pub
Pegar la llave en la cuenta de GitHub
Settings -> SSH keys -> Add SSH key
Probar la conexión:
$ ssh -T git@github.com
21. Comandos básicos
Crear un nuevo repositorio:
$ git init
Clonar un repositorio remoto:
$ git clone username@host:/path/to/repository
Agregar un origen remoto al repositorio :
$ git remote add upstream username@host:/path/to/repository
Sincronizar las ramas remotas:
$ git fetch --all
Cambiar de rama:
$ git checkout master
22. Crear una nueva rama y cambiarnos a ella:
$ git checkout -b feature_x
Subir una rama al origen:
$ git push origin feature_x
Eliminar una rama local:
$ git branch -d feature_x
Eliminar una rama en el origen:
$ git push -d origin feature_x
Listar las ramas:
$ git branch
23. Consultar el estado de los archivos:
$ git status
Agregar un archivo al siguiente commit:
$ git add archivo.txt
Quitar un archivo del siguiente commit:
$ git reset archivo.txt
Hacer commit local de los archivos que he agregado:
$ git commit -m "Commit message"
Subir los cambios al repositorio:
$ git push origin feature_x
24. Actualizar los cambios del branch:
$ git pull upstream master
Fusionar una rama (Git intenta hacer merge automático):
$ git merge master
Resolver conflictos:
$ git mergetool
Ver conflictos entre ramas:
$ git diff source_branch target_branch
Luego de resolver los conflictos se deben agregar los archivos modificados y hacer un
commit con los resultados de la fusión.
25. Agregar un archivo al último commit:
$ git commit -m “Initial Commit”
$ git add forgotten_file.txt
$ git commit --amend
Deshacer el último commit conservando los cambios:
$ git reset --soft HEAD^
Deshacer el último commit (CUIDADO):
$ git reset --hard HEAD^
Quitar un archivo del repositorio sin eliminarlo:
$ git rm --cached archivo.txt
26. Log de cambios con gráfico ASCII o con el detalle de los archivos:
$ git log --graph --oneline --decorate --all
$ git log --name-status
Agregar archivos de forma interactiva:
$ git add -i
Poner un TAG a un commit específico:
$ git tag 1.0.0 1b2e1d63ff
Mover los archivos agregados pendientes de commit a un branch distinto:
$ git stash
$ git checkout -b branch_name
$ git stash apply