Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Más allá de Git add/commit/push

524 views

Published on

Presentación en español durante JavaDayPeru 2018 acerca de comandos más avanzados de Git.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Más allá de Git add/commit/push

  1. 1. Más allá de git add/commit/push Directorio de trabajo Área de preparación Repositorio Local Repositorio Remoto add commit push fetch pull reset [hash] reset
  2. 2. Acerca de...
  3. 3. 3 Niveles de membresía • Oracle ACE Director • Oracle ACE • Oracle ACE Associate bit.ly/OracleACEProgram 500+ Technical Experts Helping Peers Globally Nomina a alguien que conozcas: acenomination.oracle.com Contacto: @oracleace Facebook.com/oracleaces oracle-ace_ww@oracle.com
  4. 4. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Oracle DevCS Plataforma de desarrollo proveída como servicio Desarrollo Equipo Colaboración ● Wiki ● Fragmentos de código ● Solicitud de integración Repo. Código Fuente Pruebas auto./Calidad Integración Continua Entrega Continua Gestión de Tareas Tableros ágiles ReportesRepositorio Maven Registro Docker
  5. 5. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Oracle DevCS DevOps Planear Codificar Construir Probar Liberar DesplegarOperarMonitorear ● Plan Creación/Edición/Seguimiento a tareas, tableros ágiles ● Codificar Git → Gestión de ramas, solicitudes de integración IDEs → Plugin Colaboración → Wiki, fragmentos de código ● Construir Hudson y herramientas de construcción (ej. maven, gradle, etc.) ● Probar y comprobar Junit, Selenium, findbugs, sonarqube ● Liberar y Desplegar Integrado con otros servicios en la nube de Oracle.
  6. 6. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Oracle DevCS Despliegue ... Otros serviciosOracle Java CS (JEE) Oracle Application Container CS (Node.js, Java SE, PHP) Oracle Developer CS Oracle Database CS Oracle Container Service
  7. 7. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Oracle DevCS Git ● Gestión de usuarios ● Gestión de repositorios – Ramas – Tags – Historia – Creación/Edición de archivos ● Merge Requests – Notificación – Colaboración – Interacción
  8. 8. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Flujos de trabajo con Git Definición ● Guías que definen como trabajar con Git ● Miembros del proyecto deben conocerlas y seguirlas ● Diferentes workflows para diferentes proyectos
  9. 9. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Flujos de trabajo con Git Feature Branch Fuerte trabajo con ramas Base para otros workflows Promueve colaboración Pull Requests Code Review master feature feature feature
  10. 10. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Flujos de trabajo con Git Gitflow hotfixes release develop feature feature Vincent Driessen - http://nvie.com/posts/a-successful-git-branching-model/ Define el rol de cada rama y su interacción con las demás Útil para modelos donde el software se desarrolla por versiones Extensión: git-flow master v0.1 v0.02 v1.0
  11. 11. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Flujos de trabajo con Git Forking master hotfixes release develop feature feature v0.1 v0.02v0.1 v1.0 master hotfixes release develop feature feature v0.1 v0.02v0.1 v1.0 upstream Proyecto oficial origin Fork (copia) Dueño del Repositorio Solicitud de integración Aprueba integración Pull Rechaza integración
  12. 12. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Flujos de trabajo con Git Recomendaciones ● No hay un workflow que se ajuste a todos los proyectos ● El modelo de negocio influye en la selección ● Código en rama master debe estar completo y funcional en todo momento ● Crear ramas de corta vida ● Dar nombres significativos a las ramas ● Al confirmar cambios usar mensajes claros ● Cada commit debe ser completo y coherente
  13. 13. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git stash ● Guardado rápido de cambios del directorio de trabajo. ● Permite trabajar en otras tareas sin afectar lo que se estaba haciendo. ● No confirma cambios. ● Permite volver a aplicar los cambios guardados al directorio de trabajo. ● Solo local. Directorio de trabajo Guardado Rápido
  14. 14. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git stash – Guardado rápido # Guarda rápidamente el trabajo en progreso con un mensaje genérico (WIP + rama + hash). # Cuidado! No guarda cambios de archivos ignorados o sin seguimiento. git stash # Guarda rápidamente el trabajo en progreso con el mensaje especificado. # Cuidado! No guarda cambios de archivos ignorados o sin seguimiento. git stash save “message” # Guarda rápidamente el trabajo en progreso con el mensaje especificado. # Incluye archivos sin seguimiento, no incluye archivos ignorados. git stash save -u “message” # Guarda rápidamente el trabajo en progreso con el mensaje especificado. # Incluye archivos sin seguimiento e ignorados. git stash save -a “message”
  15. 15. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git stash – Listar/Examinar cambios guardados # Lista los puntos de guardado rápido que se encuentran localmente. git stash list # Muestra un resumen de los últimos cambios guardados. git stash show # Muestra un resumen del n-ésimo cambio guardado. git stash show stash@{n} # Muestra el detalle de los últimos cambios guardados. git stash show -p # Muestra el detalle del n-ésimo cambio guardado. git stash show -p stash@{n}
  16. 16. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git stash – Aplicar/Borrar cambios guardados # Aplica el último cambio guardado al directorio de trabajo y lo borra localmente. # Es posible pasar como parámetro el n-ésimo cambio guardado. git stash pop [stash@{n}] # Aplica el último cambio guardado al directorio de trabajo, NO lo borra. # Es posible pasar como parámetro el n-ésimo cambio guardado. git stash apply [stash@{n}] # Borra el último cambio guardado. # Es posible pasar como parámetro el n-ésimo cambio guardado. git stash drop [stash@{n}] # Borra todos los cambios guardados. git stash clear
  17. 17. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git stash – Recomendaciones ● git save se ha marcado como obsoleto en favor de git push. ● En lo posible usar siempre un mensaje claro. ● No almacenar los cambios por mucho tiempo. ● ¿Muchos conflictos? Usar: git stash branch rama-nueva stash@{n} Directorio de trabajo Guardado Rápido
  18. 18. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git cherry-pick ● Selecciona un commit y lo aplica a la rama actual. ● Posibilidad de resolver conflictos y continuar/abortar. ● Genera nuevos commit con nuevos IDs por cada commit seleccionado. a master feature d b c d’ e cherry-pick
  19. 19. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git cherry-pick # 1. Ubicarse en la rama destino, en este caso master git checkout master # 2. Copiar el commit de la rama feature a la rama master git cherry-pick -x commitId a master feature d b c d’ e cherry-pick
  20. 20. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git cherry-pick - Recomendaciones ● Usar con cuidado debido a que crea commits duplicados. ● Usar opción -x para adicionar mensaje auto.: – "(cherry picked from commit …)" ● Si se requiere adicionar varios commits consecutivos, mejor usar merge o rebase. a master feature d b c d’ e cherry-pick
  21. 21. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git commit --amend ● Permite “modificar” el último commit: – Adicionar archivos del área de preparación. – Cambiar mensaje de confirmación. ● Crea un nuevo commit con el mismo autor e instante de tiempo. feature b c git commit --amend a d
  22. 22. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git commit --amend # Adicionar nuevos archivos al último commit # No modifica el mensaje del commit git add archivoPendiente git commit --amend --no-edit # Modificar mensaje último commit git commit --amend -m “nuevo mensaje” feature b c git commit --amend a d
  23. 23. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git commit --amend - Recomendaciones ● Evitar corregir commits que ya han sido puestos en el remoto. – git push -f origin rama bajo tu propio riesgo... feature b c git commit --amend a d
  24. 24. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git rebase ● Brinda la posibilidad de reescribir la historia. ● También permite integrar cambios de una rama en otra: – Historias lineales. – Como si la rama se hubiese creado a partir de los últimos cambios. ● Dos modos: – Manual – Interactivo: Permite cambiar mensajes, modificar/combinar/remover commits... master feature git rebase master feature f d a e c b f’ d’
  25. 25. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git rebase # Modifica la base de la segunda rama # para que sea la punta de la primera git rebase master feature # Modifica la hstoria de la rama actual desde el commit n git checkout feature git log git rebase -i HEAD~n master feature git rebase master feature f’ e’ a d c b
  26. 26. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Comandos más avanzados con Git git rebase - Recomendaciones ● Evitar corregir commits que ya han sido puestos en el remoto. – git push -f origin rama bajo tu propio riesgo... master feature git rebase master feature f’ e’ a d c b
  27. 27. Más allá de git add/commit/pushAlexis Lopez @aa_lopez v1 – MAY - 2018 Enlaces A más contenido... ● Libro oficial Git https://git-scm.com/book ● Información general de Git https://www.atlassian.com/git/tutorials/what-is-version-control ● Developer Cloud Service https://cloud.oracle.com/developer_service ● Iconos https://www.iconfinder.com

×