Mejora tu productividad con
Gustavo Delgado R.
Backend developer - Uprise
gustavo@uprise.cl
gustavonecore
● Trabajo colaborativo
● Git
● Tus primeros comandos en Git
● Usted no lo haga
● Preguntas
Trabajo colaborativo
Trabajo colaborativo
Coder 1
Trabajo colaborativo
Coder 1 Coder 2
Trabajo colaborativo
Coder 1 Coder 2
Trabajo colaborativo
Coder 1 Coder 2
Coder 2
Trabajo colaborativo
Coder 1 Coder 2
Coder 2
Trabajo colaborativo
Porqué es difícil?
Pasa hasta en las mejores familias
Pasa hasta en las mejores familias
Pasa hasta en las mejores familias
Pasa hasta en las mejores familias
Pasa hasta en las mejores familias
Git
Git (pronunciado "guit") es un software de control de versiones diseñado por Linus
Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de
versiones de aplicaciones cuando éstas tienen un gran número de archivos de
código fuente.
Git
"You know you're brilliant, but maybe you'd like to understand
what you did two weeks from now." - Linus Torvalds
Git - The goods
● Auditoría del código
● Control sobre cómo ha cambiado un repositorio
● Rollback de cambios simple
● Segmentación de diferentes versiones a.k.a branch.
● Seguridad: todas las estructuras internas de datos están firmadas con SHA1. No se puede
cambiar el código sin que nos enteremos
● Mejora nuestra capacidad de trabajar en equipo
● Merging y branching extremadamente eficientes
● Posibilidad de trabajo sin conexión
Git
Git
Git
Git - Svn/Mercurial/etc
Git - Svn/Mercurial/etc
Git - Svn/Mercurial/etc
Git - Branches
master
feature/1
bugfix/1
Git - Merge
feature/1
Git - Flow recipe
1. Developer tiene una tarea (issue)
2. Developer ejecuta clone del repositorio remoto en su máquina local.
3. Developer crea un nuevo branch local desde la rama que posee los últimos
cambios válidos (e.g: master, develop)
4. Developer realiza la tarea y está listo para subir su código
5. Developer agrega archivos y hace commit del cambio (repetir este paso
según sea necesario)
6. Developer sube su rama local al repositorio remoto (push)
7. Developer crea una solicitud de integración (pull request)
Git - Flow recipe
Git - Esencial
Git - Clonar repositorio
ssh$ git clone git@github.com:gustavonecore/sandbox.git
…..
Comprobando la conectividad… hecho.
git clone
Git - Listar ramas
ssh/sandbox$ git branch
develop
* master
git branch
Git - Cambiar de rama
ssh/sandbox$ git checkout develop
ssh/sandbox$ git branch
* develop
master
git checkout {branch}
Git - Crear rama a partir de otra como base
ssh/sandbox$ git checkout -b feature/1 develop
Switched to a new branch 'feature/1'
ssh/sandbox$ git branch
develop
* feature/1
master
git checkout -b {child} {parent}
Git - Revisar cambios
ssh/sandbox$ git status
modificado: README.md
ssh/sandbox$ git diff
--- a/README.md
+++ b/README.md
-# sandbox
+# Sandbox - Play repository
git status
git diff
Git - Agregar archivos modificados
ssh/sandbox$ git add README.md
ssh/sandbox$ git status
modificado: README.md
git add file
git add .
Git - Guardar cambios en la rama localmente
ssh/sandbox$ git commit -m “Improve description of readme”
[feature/1 9caf4a5] Improve description of readme
1 file changed, 1 insertion(+), 2 deletions(-)
git commit -m “{message}”
Git - Sincronizar rama local con rama remota
ssh/sandbox$ git pull origin develop
* branch develop -> FETCH_HEAD
Already up-to-date.
git fetch
git merge origin {branch}
Git - Subir cambios al repositorio remoto
ssh/sandbox$ git push origin feature/1
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 331 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To git@github.com:gustavonecore/sandbox.git
* [new branch] feature/1 -> feature/1
git push origin {branch}
Git - Ver historial
ssh/sandbox$ git log
commit 9caf4a571c240aa206c389dab717a10fa174bb19
Author: Gustavo Delgado <gustavod@digintent.com>
Date: Wed Mar 8 23:50:31 2017 -0300
Improve description of readme
commit 14cf23407d4151d2022f5317261048522376f7bb
Author: gustavonecore <gustavo.uach@gmail.com>
Date: Wed Jan 27 16:56:57 2016 -0300
Add readme
git log
Git Platforms
Git - Let’s do it
Usted no lo haga
●
Usted no lo haga
● Subir cambios directos a master (siempre ocurre :@ )
● Mezclar cambios de diferentes branches
● Intentar eliminar un commit que ya está en el repositorio remoto
● Usar git add . sin revisar qué archivos fueron modificados
● No subir commits periódicamente
● No mantener actualizado tu branch con el branch desde donde salió.
● Crear un PR con conflictos y errores
● Usar mensajes no descriptivos en los commits
Git - Productividad
¿Preguntas?

Mejora tu productividad con git

  • 1.
    Mejora tu productividadcon Gustavo Delgado R. Backend developer - Uprise gustavo@uprise.cl gustavonecore
  • 2.
    ● Trabajo colaborativo ●Git ● Tus primeros comandos en Git ● Usted no lo haga ● Preguntas
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
    Pasa hasta enlas mejores familias
  • 11.
    Pasa hasta enlas mejores familias
  • 12.
    Pasa hasta enlas mejores familias
  • 13.
    Pasa hasta enlas mejores familias
  • 14.
    Pasa hasta enlas mejores familias
  • 17.
    Git Git (pronunciado "guit")es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.
  • 18.
    Git "You know you'rebrilliant, but maybe you'd like to understand what you did two weeks from now." - Linus Torvalds
  • 19.
    Git - Thegoods ● Auditoría del código ● Control sobre cómo ha cambiado un repositorio ● Rollback de cambios simple ● Segmentación de diferentes versiones a.k.a branch. ● Seguridad: todas las estructuras internas de datos están firmadas con SHA1. No se puede cambiar el código sin que nos enteremos ● Mejora nuestra capacidad de trabajar en equipo ● Merging y branching extremadamente eficientes ● Posibilidad de trabajo sin conexión
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    Git - Flowrecipe 1. Developer tiene una tarea (issue) 2. Developer ejecuta clone del repositorio remoto en su máquina local. 3. Developer crea un nuevo branch local desde la rama que posee los últimos cambios válidos (e.g: master, develop) 4. Developer realiza la tarea y está listo para subir su código 5. Developer agrega archivos y hace commit del cambio (repetir este paso según sea necesario) 6. Developer sube su rama local al repositorio remoto (push) 7. Developer crea una solicitud de integración (pull request)
  • 29.
    Git - Flowrecipe
  • 30.
  • 31.
    Git - Clonarrepositorio ssh$ git clone git@github.com:gustavonecore/sandbox.git ….. Comprobando la conectividad… hecho. git clone
  • 32.
    Git - Listarramas ssh/sandbox$ git branch develop * master git branch
  • 33.
    Git - Cambiarde rama ssh/sandbox$ git checkout develop ssh/sandbox$ git branch * develop master git checkout {branch}
  • 34.
    Git - Crearrama a partir de otra como base ssh/sandbox$ git checkout -b feature/1 develop Switched to a new branch 'feature/1' ssh/sandbox$ git branch develop * feature/1 master git checkout -b {child} {parent}
  • 35.
    Git - Revisarcambios ssh/sandbox$ git status modificado: README.md ssh/sandbox$ git diff --- a/README.md +++ b/README.md -# sandbox +# Sandbox - Play repository git status git diff
  • 36.
    Git - Agregararchivos modificados ssh/sandbox$ git add README.md ssh/sandbox$ git status modificado: README.md git add file git add .
  • 37.
    Git - Guardarcambios en la rama localmente ssh/sandbox$ git commit -m “Improve description of readme” [feature/1 9caf4a5] Improve description of readme 1 file changed, 1 insertion(+), 2 deletions(-) git commit -m “{message}”
  • 38.
    Git - Sincronizarrama local con rama remota ssh/sandbox$ git pull origin develop * branch develop -> FETCH_HEAD Already up-to-date. git fetch git merge origin {branch}
  • 39.
    Git - Subircambios al repositorio remoto ssh/sandbox$ git push origin feature/1 Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 331 bytes | 0 bytes/s, done. Total 3 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To git@github.com:gustavonecore/sandbox.git * [new branch] feature/1 -> feature/1 git push origin {branch}
  • 40.
    Git - Verhistorial ssh/sandbox$ git log commit 9caf4a571c240aa206c389dab717a10fa174bb19 Author: Gustavo Delgado <gustavod@digintent.com> Date: Wed Mar 8 23:50:31 2017 -0300 Improve description of readme commit 14cf23407d4151d2022f5317261048522376f7bb Author: gustavonecore <gustavo.uach@gmail.com> Date: Wed Jan 27 16:56:57 2016 -0300 Add readme git log
  • 41.
  • 42.
  • 43.
    Usted no lohaga ●
  • 44.
    Usted no lohaga ● Subir cambios directos a master (siempre ocurre :@ ) ● Mezclar cambios de diferentes branches ● Intentar eliminar un commit que ya está en el repositorio remoto ● Usar git add . sin revisar qué archivos fueron modificados ● No subir commits periódicamente ● No mantener actualizado tu branch con el branch desde donde salió. ● Crear un PR con conflictos y errores ● Usar mensajes no descriptivos en los commits
  • 45.
  • 46.