do you have a minute to talk about git?




GIT



is a distributed revision control and source code management (SCM) system with an emphasis on speed and efficiency

Version Control Systems



local CONTROL SYSTEMS


Centralized



distributed

(almost) everything is local



GIT workflow


  • Working copy, corresponde con el espacio de trabajo, la zona habitual donde están los archivos que iremos modificando.
  • Stage, la rampa de lanzamiento, donde se van colocando las cosas que vamos a querer persistir. 
  •  Repository, corresponde con los archivos internos de  Git en la máquina local. 
  • remote, los archivos de Git remotos.


First configuration




  • git config --global user.name "Ali Cate"
  • git config --global user.email ali@cate.com
  • git config --global color.ui true
  • git config --global core.editor subl
  • git config --global push.default simple
  • git config --list

SETUp



  • mkdir gitkata 
  • cd gitkata 
  • git init --bare repo 
  • git clone repo a_local 
  • git clone repo b_local 

Kata One - basic




  • Crear un archivo en a_local
  • Subirlo a repo
  • actualizar b_local
  • observar cambios.

KATA TWO - brach


Crear un branch en a_local y subir cambios al branch, publicar al remoto (repo) Actualizar branches y contenido en b_local

kata three - merge


  • Crear un branch fix, a partir de master, crear un archivo y aplicar cambios 
  • pasar a master, crear un archivo diferente y aplicar cambios
  • Hacer merge de los cambios de fix a master.

kata four - merge with conflicts

> cd a_local  
> touch hola    
> git add hola    
> git commit -m "Nuevo saludo"
> git push    
> cd ../b_local 
> git pull    
> echo "Hola, como estas?" > hola    
> git commit -a -m "Saludo mejorado"   
> git push 
> cd ../a_local 
> echo "Bueno días" > hola
> git commit -a -m "Saludos de inicio de dia"    > git pull  










Resuelva el conflicto!

KATA FIVE -  REBASE


  • Crear un branch fix, a partir de master, modificar un archivo y aplicar cambios 
  • pasar a master 
  • crear un archivo diferente y aplicar cambios
  • Hacer rebase de los cambios de fix a master.
 

kata six - tags


  • git clone --depth=14 https://github.com/angular/angular-phonecat.git
  • git checkout -f step-0
  • git checkout -f step-1
  • git checkout -f step-2

kata SEVEN - submodules


  • Crear y subir un repo
  • agregar un submodulo
  • Clonar en otra ubicación el repositorio principal.
  • Cambiar al directorio del repositorio
  • Inicializar el submódulo.
  • Actualizar el submódulo.

Kata EIGHT - stash


  • modificar un documento sin poner en el stage
  • poner el cambio en el stash
  • visualizar listado del stash
  • modificar otro archivo y agregar al stash
  • restaurar el ultimo cambio

Kata NINE - undo-commit


  • sin subir al remote!!!
  • git reset --soft HEAD~1
  • git reset --hard HEAD~1
  • usar con responsabilidad!( ya en el remote)
  • git push --force

kata TEN - cherry pick & patching


  • crear rama dev a partir de master
  • hacer 3 commits en dev
    • hacer cherry pick del commit 1
    • crear un parche del 2 commit
    • pasar a master y aplicar el parche

what do i do now?




GIT

By Yamit Cardenas M