Diapositivas curso entendiendo_git

848 views

Published on

Diapositivas utilizadas durante el curso "Entendiendo git".

Cuando un equipo de desarrollo y/o diseño trabaja de verdad en equipo, una herramienta como git se hace imprescindible. Trabajaréis con la tranquilidad y seguridad de saber que siempre podréis volver atrás, sabréis qué ha pasado con el código, controlaréis quién y cuándo lo ha modificado y reduciréis el tiempo dedicado al mantenimiento del mismo. Aunque la flexibilidad de git permite que lo adaptéis a vuestro flujo de trabajo sin grandes dificultades, será git el que acabe por cambiar vuestra forma trabajar, tanto si trabajáis solos como si lo hacéis en equipo.

Objetivos: Entender el funcionamiento interno de git, ser capaces de comprender el grafo de evolución de un proyecto, entender qué es una rama y una etiqueta (¿hay alguna diferencia?), entender qué son los repositorios y ramas remotas y aprender a trabajar en equipo a través de un servidor central (github/bitbucket).

Dirigido a: Programadores, diseñadores, maquetadores y administradores de sistemas que quieran mejorar el control sobre el código fuente, la gestión de sus ficheros de configuración o versionar, en general, cualquier fichero de texto plano. No se requiere ningún conocimiento previo de git o cualquier otro sistema de control de código.

Temario:

Tema 1: Introducción
¿Por qué usar un sistema de control de código?
Un poco de teoría
Cómo instalar Git en Mac, Windows y Linux
Herramientas visuales para trabajar con git
Tema 2: Trabajando con Git
Crear o clonar un repositiorio
Controlando los cambios que hacemos en el código
Revisando el histórico de nuestro repositorio
Me he equivocado ¿qué hago?
Etiquetas
Tema 3: Ramas
¿Para qué necesito las ramas?
Branching y Merging
Resolución de conflictos
Ejemplo de flujos de trabajo
Ramas remotas
Volver a un estado anterior
Tema 4: Repositorios remotos
¿Para qué necesitamos un servidor?
Trabajando con repositorios remotos
Pull y push a fondo
Trabajando con ramas remotas
Pull requests
Tema 5: Trabajo en equipo
Trabajando con múltiples repositorios remotos
Compartir nuestro repositorio con otras personas
Trabajando en equipo
Resolución de conflictos
Flujos de trabajo

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
848
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
57
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Diapositivas curso entendiendo_git

  1. 1. Entendiendo git cursos@cursodegit.com @cursodegit Nuestro blog : www.aprendegit.com @aprendegit Alfonso Alba García @aalbagarcia Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  2. 2. ¿porqué estáis aquí? Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  3. 3. ¿Qué nos permite git? Auditoría del código: Saber qué ha pasado y cuando Saber quién lo ha hecho Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  4. 4. ¿Qué nos permite git? Desarrollo ágil: Es sencillo crear espacios para probar cosas sin que interrumpa nuestro flujo de trabajo normal Es sencillo cambiar de un tema a otro Refactoring es más sencillo Se integra a la perfección con la metodología TDD Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  5. 5. ¿Qué nos permite git? Gestión de errores: Dar marcha atrás cuando nos equivocamos Volver a un punto anterior del desarrollo Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  6. 6. ¿Qué nos permite git? Control de código: Saber qué se ha entregado al cliente Saber qué se ha desplegado en producción Saber en qué estado está el desarrollo de una determinada característica Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  7. 7. ¿Qué nos permite git? Trabajo en equipo: Optimiza y permite el trabajo distribuido de equipos de muchas personas Extremadamente flexible: se implementa casi cualquier flujo de trabajo, aunque lo normal es que git te los optimice y los tengas que cambiar... Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  8. 8. Conceptos básicos Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  9. 9. Conceptos básicos Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  10. 10. Conceptos básicos Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  11. 11. .gitignore Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  12. 12. .gitignore Tres formas de ignorar ficheros (por orden de prioridad) .git/info/exclude -> sólo este repositorio .gitignore -> todos los que clonan el repositorio .gitignore_local -> todos mis repositorios locales git config --get core.excludesfile Se aplica el último patrón que se lee Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  13. 13. .gitignore: Patrones Líneas en blanco: se ignoran # Comentarios ! negación Patrones terminados en / se interpretan como carpetas Si el patrón empieza por /, se interpreta como ruta relativa El resto de patrones se interpretan como Shell globs Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  14. 14. .gitignore: Patrones * -> Comodín (no incluye el separador de directorios) el patrón web/*.html ignora el fichero web/index.html pero no ignora web/blog/ index.html [ ] -> Selección. ? -> cualquier caracter (sólo uno) Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  15. 15. .gitignore: ejemplos Ejemplos de patrones: .idea/ *.html web/*.html /*.php *.[xn]ib Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  16. 16. .gitignore Más información: Página de manual de .gitignore Serie de artículos sobre .gitignore en aprendegit.com Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  17. 17. El fichero .gitignore para proyectos XCode http://stackoverflow.com/questions/49478/git- ignore-file-for-xcode-projects https://gist.github.com/adamgit/3786883 Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  18. 18. Creación de un proyecto con git Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  19. 19. Creación de un repositorioCrea una carpeta, entra dentro y ejecuta el comando git init el repositorio se inicializa y aparece la carpeta .git Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  20. 20. Estado del repositorio ¿Cómo están los ficheros en los que estamos trabajando? git status Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  21. 21. Estado del repositorio$ git status# On branch lugares# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)##! modified: app/controllers/backend/application_controller.rb#! modified: config/routes.rb## Untracked files:# (use "git add <file>..." to include in what will be committed)##! app/assets/javascripts/backend/cities.js.coffee#! app/assets/javascripts/backend/resource.js.coffee#! app/assets/stylesheets/backend/cities.css.scss#! app/assets/stylesheets/backend/resource.css.scss#! app/controllers/backend/cities_controller.rb#! app/controllers/backend/resource_controller.rb#! app/helpers/backend/cities_helper.rb#! app/helpers/backend/resource_helper.rb#! app/views/backend/#! app/views/layouts/backend.html.erb#! test/controllers/backend/cities_controller_test.rb#! test/controllers/backend/resource_controller_test.rb#! test/helpers/backend/cities_helper_test.rb#! test/helpers/backend/resource_helper_test.rbno changes added to commit (use "git add" and/or "git commit -a") Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  22. 22. Añadiendo ficheros Añadimos ficheros al Staging Area git add * git add <fichero> <fichero> Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  23. 23. Añadiendo ficheros Añadimos ficheros al Staging Area git add * git add <fichero> <fichero> Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  24. 24. Añadiendo ficheros Se puede iniciar un proceso interactivo para seleccionar qué partes de un fichero queremos subir al staging area. Ejecutamos git add -i $ git add -i staged unstaged path 1: unchanged +2/-2 index.html *** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elp What now> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  25. 25. Añadiendo ficherosSeleccionar la opción “p” y posteriormente el ficheroseleccionando el número que nos muestra la interfaz$ git add -i staged unstaged path 1: unchanged +6/-2 index.html*** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elpWhat now> p staged unstaged path 1: unchanged +6/-2 [i]ndex.htmlPatch update>> 1 staged unstaged path* 1: unchanged +6/-2 [i]ndex.htmlPatch update>> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  26. 26. Añadiendo ficheros En este punto, presionamos de nuevo “Intro” y entramos en el modo interactivo Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  27. 27. $ git add -i staged unstaged path 1: unchanged +6/-2 index.html *** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elp What now> p staged unstaged path 1: unchanged +6/-2 [i]ndex.html Patch update>> 1 staged unstaged path * 1: unchanged +6/-2 [i]ndex.html Patch update>> diff --git a/index.html b/index.html index b08ce9a..3c50d0c 100644 --- a/index.html +++ b/index.html @@ -21,8 +21,8 @@ <li><a href="#">Github</a></li> <li><a href="#">XCode</a></li> <li><a href="#">¿Quiénes somos?</a></li> - <li><a href="#">Cursos</a></li> - <li><a href="#">Contacto</a></li> + <li><a href="#">Cursos de git</a></li> + <li><a href="#">Contacta con nosotros</a></li> </ul> </div> </div> Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  28. 28. Añadiendo ficheros Puedes seleccionar qué hacer con los pedazos (hunks) de código que has modificado en el fichero $ git add -i ... Patch update>> diff --git a/index.html b/index.html index b08ce9a..3c50d0c 100644 --- a/index.html +++ b/index.html @@ -21,8 +21,8 @@ <li><a href="#">Github</a></li> <li><a href="#">XCode</a></li> <li><a href="#">¿Quiénes somos?</a></li> - <li><a href="#">Cursos</a></li> - <li><a href="#">Contacto</a></li> + <li><a href="#">Cursos de git</a></li> + <li><a href="#">Contacta con nosotros</a></li> </ul> </div> </div> Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  29. 29. Añadiendo ficheros Para saber qué es cada una de las opciones, pulsa ? y luego “Intro” $ git add -i ... Patch update>> diff --git a/index.html b/index.html index b08ce9a..3c50d0c 100644 --- a/index.html +++ b/index.html @@ -21,8 +21,8 @@ <li><a href="#">Github</a></li> <li><a href="#">XCode</a></li> <li><a href="#">¿Quiénes somos?</a></li> - <li><a href="#">Cursos</a></li> - <li><a href="#">Contacto</a></li> + <li><a href="#">Cursos de git</a></li> + <li><a href="#">Contacta con nosotros</a></li> </ul> </div> </div> Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? ? Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  30. 30. Añadiendo ficherosStage this hunk [y,n,q,a,d,/,j,J,g,e,?]? ?y - stage this hunkn - do not stage this hunkq - quit; do not stage this hunk nor any of the remaining onesa - stage this hunk and all later hunks in the filed - do not stage this hunk nor any of the later hunks in the fileg - select a hunk to go to/ - search for a hunk matching the given regexj - leave this hunk undecided, see next undecided hunkJ - leave this hunk undecided, see next hunkk - leave this hunk undecided, see previous undecided hunkK - leave this hunk undecided, see previous hunks - split the current hunk into smaller hunkse - manually edit the current hunk? - print help Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  31. 31. Añadiendo ficherosStage this hunk [y,n,q,a,d,/,j,J,g,e,?]? ?y - Pasar este trozo al área de ensayon - No pasar este trozoq - terminar. No pasa este trozo ni ninguno de los que quedan al staging areaa - Pasa este pedazo y todos los que quedan al staging aread - No pases este trozo ni ninguno de los que quedan en el fichero al staging areag - Selecciona un trozo para situarnos en el/ - Busca un trozo que encaje con una expresión regularj - Mantener este trozo como “indeciso” y ve al siguiente hunk marcado como “indeciso”J - Mantener este trozo como “indeciso” y ve al siguientek - Mantener este trozo como “indeciso” y ve al siguiente hunk marcado como “indeciso”K - siguiente hunk marcado como “indeciso” y ve al anteriors - rompe este trozo en trozos más pequeñose - editar este trozo manualmente? - ayuda Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  32. 32. Añadiendo ficheros Al terminar, podemos usar la opción “s” para ver el estado y posteriormente “q” para terminar Cambios fuera del staging area ¡no Cambios subidos al estarán en el siguiente commit! staging areaWhat now> s staged unstaged path 1: +2/-2 +4/-0 index.html*** Commands *** 1: [s]tatus! 2: [u]pdate! 3: [r]evert! 4: [a]dd untracked 5: [p]atch! 6: [d]iff! 7: [q]uit! 8: [h]elpWhat now> q Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  33. 33. Añadir ficheros Más información: Sección 6.2 - Pro git Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  34. 34. Añadiendo ficheros Pasamos los ficheros al repositorio git commit -m’Mensaje del commit’ Utilizad siempre un mensaje corto y descriptivo Evitad mensajes como “trabajando” “...” que no aportan nada al que lo lee Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  35. 35. Añadiendo ficherosSi nos hemos olvidado algún fichero al hacer el último commit, podemos añadirlo al staging area con git add <fichero> y modificar el commit ejecutando git commit --amend La opción --amend también permite modificar el comentario del commit Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  36. 36. Añadiendo ficheros Recuerda que git commit --amend va a sobreescribir la historia del proyecto Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  37. 37. Borrando y moviendo ficheros Borrar un fichero del índice git rm <fichero> Mover un fichero git mv <ruta actual> <ruta nueva> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  38. 38. Etiquetando los commits Etiquetamos los commits para poder recuperar elcódigo fuente en un estado determinado en el futuro Etiqutar el último commit de la rama activa git tag <nombre> -m’Mensaje’ Etiquetar un commit determinado git tag <nombre> -m’Mensaje’ <commit> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  39. 39. Etiquetando los commits Borrar una etiqueta git tag -d <nombre> Ver todas las etiquetas git tag -l Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  40. 40. Sacando ficheros del Staging Area Deshacer los cambios de un fichero que todavía no está en Staging Area git checkout -- <fichero> Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  41. 41. Sacando ficheros del Staging Area Sacar un fichero que está en el Staging Area git reset HEAD <fichero> Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  42. 42. Sacando ficheros del Staging Area Sacar un fichero que está en el Staging Area git reset HEAD <fichero> Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  43. 43. Sacando ficheros del Staging Area Sacar todos los ficheros que están en el Staging Area git reset HEAD Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  44. 44. Stashing Stash: área en el que podemos guardar cambios en ficheros para aplicarlos luego Útil para: Poder interrumpir una tarea y trabajar en otra Mover cambios de un sitio a otro Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  45. 45. Stashing Almacenar en el stash los cambios del working copy en ese momento git stash save “mensaje” Stash Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  46. 46. Stashing Almacenar en el stash los cambios del working copy en ese momento git stash save “mensaje” Stash Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  47. 47. Stashing Muestra el listado de entradas del stash git stash list Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  48. 48. Stashing Recuperar algo almacenado en el Stash git stash pop <nombre> Stash Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  49. 49. Stashing Recuperar algo almacenado en el Stash git stash pop <nombre> Stash Working Working Staging Area directory directory Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  50. 50. Stashing Recuperar una entrada del stash y guarda una copia git stash apply <nombre> Borrar una entrada del stash sin aplicarla git stash drop <nombre> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  51. 51. Ramas Una rama en git es una etiqueta Creación de una rama en el último commit de la rama activa git branch <nombre> Crear una rama en un commit git branch <nombre> <commit> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  52. 52. Ramas Crear una rama y activarla git checkout -b <nombre> Cambiar de rama git checkout <nombre> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  53. 53. Ramas Para incorporar los cambios de feature_x en master cambiamos a la rama master git checkout master e incorporamos los cambios de la rama feature_x git merge feature_x Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  54. 54. Ramas: rebase Para incorporar los cambios de feature_x en master cambiamos a la rama master git checkout master e incorporamos los cambios de la rama feature_x git rebase feature_x Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  55. 55. merge vs rebase git merge master a45f32d feature_x * 432f0bc 12ab56d master 12ab56d abbcd56 abbcd56 f43c00a Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  56. 56. merge vs rebase git merge master 897bc34 merge commit a45f32d feature_x * 432f0bc 12ab56d master 12ab56d abbcd56 abbcd56 f43c00a Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  57. 57. merge vs rebase git rebase master a45f32d feature_x * 432f0bc 871634 master 12ab56d 726374 abbcd56 f43c00a Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  58. 58. merge vs rebase git rebase master ???? feature_x * ???? ???? master 12ab56d ???? abbcd56 f43c00a Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  59. 59. merge vs rebase git rebase master ???? feature_x * ???? ???? ???? master 12ab56d abbcd56 Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  60. 60. merge vs rebase git rebase master 75f8c57 feature_x * a8ae0e0 9c26e18 ab516sd master 12ab56d abbcd56 Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  61. 61. Repositorios remotos Para subir nuestro repositorio a un repositorio remoto necesitamos conocer la URL del repositorio Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  62. 62. Repositorios remotos Para añadir un repositorio remoto ejecutamos git remote add <nombre> <url> Se puede ver la lista de remotos con git remote -v Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  63. 63. Repositorios remotos Borrar un repositorio remtos git remote remove <nombre> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  64. 64. Push Para subir todos nuestros commits de la rama activa al repositorio remoto ejecutamos git push <remoto> <rama remota> usando el repositorio que hemos creado durante la clase git push origin master Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  65. 65. Tracking branches Una “Tracking branch” es una rama local que está relacionada con una remota. Si estás en una rama local que es “tracking branch” de una rama remota y ejecutas el comando git push git automáticamente lo convierte en git push <tracking branch> <origin/rama Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo unacursodegit.com remota> Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported. aprendegit.comjueves, 4 de abril de 13
  66. 66. Tracking branches Podemos crear una “tracking branch” de una rama remota ejecutando git branch --track <rama local> <remoto>/<rama remota> que siguiendo con el ejemplo que hacemos en clase sería git branch --track mirama origin/master Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  67. 67. Tracking branches En cualquier momento podemos hacer que una tracking branch deje de serlo ejecutando git branch --unset-upstream <rama> En cualquier momento podemos hacer que una rama local sea una tracking branch ejecutando git branch --unset-upstream-to=<remoto>/<rama remota> <rama local> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  68. 68. Pull / FetchPara descargarnos los commits del repositorio remoto git fetch <remoto> Este comando actualiza los commits únicamente. Si queremos ahora incorporar los cambios de una rama remota en una rama local ejecutamos git checkout <rama local> git merge <remoto>/<rama remota> Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  69. 69. Pull / Fetch Supongamos que tenemos una rama local “feature_x” que es tracking branch de una rama remota “origin/feature_x” La rama remota ha sido actualizada por otro miembro del equipo y queremos actualizarnos git checkout feature_x git fetch origin git merge origin/feature_x Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  70. 70. Pull / Fetch Esta operación es tan común que git nos da un atajo git checkout feature_x git fetch origin git merge origin/feature_x git checkout feature_x git pull Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  71. 71. Pull / Fetch git-pull por defecto hace un merge, ¿quieres que en lugar de merge haga un rebase? git checkout feature_x git pull --rebase Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  72. 72. Buenas prácticas Usa ramas locales No dejar los mensajes de los commits vacíos Usar mensajes descriptivos que indiquen qué contiene el commit. ¿Qué quiere decir “trabajando”? ¿Y “...”? Si utilizas un sistema de tareas o bug tracking que se enlaza con git (como Jira o redmine) enlaza tus commits con tus tickets, bugs o tareas Haz commits pequeños. Haz commit a menudo. Usa ramas locales Atomiza los commits todo lo que puedas. Intenta no mezclar en un mismo commit código de cosas que no tengan nada que ver entre sí. Por ejemplo: si has hecho tres vistas (tabla de registros, detalle de registro y formulario de alta de registro) haz tres commits, no hagas sólo uno. El flujo TDD es escribir test - rojo - escribir código - verde - commit. Si luego te quedan muchos commits, siempre puedes hacer squashing. Usa ramas locales y utiliza rebase para incorporar los cambios de las otras ramas. Haz squashing de tus commits para eliminar aquellos que sean irrelevantes para el resto del equipo Evita sobreescribir la historia del repositorio (a no ser que sepas lo que estás haciendo) Por cierto, usa ramas locales Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13
  73. 73. ¡Gracias! Diapositivas del curso "Entendiendo git" porcursodegit.com se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.cursodegit.com aprendegit.comjueves, 4 de abril de 13

×