Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hablemos de Git

Hablemos de Git

Talk I gave for my team to learn best practice about using Git.

More Decks by Jose Flavio Quispe Irrazábal

Other Decks in Programming

Transcript

  1. Comandos de Git $ git config --list --show-origin • Ver

    lista de configuraciones y de dónde vienen
  2. Comandos de Git $ git config --global user.name “JoseFlavio” $

    git config --global user.email “jfl[email protected]” • Colocando tu identidad global • Colocando tu identidad por proyecto $ git config user.name “Jose Quispe” $ git config user.email “[email protected]
  3. Comandos de Git $ git config --global core.editor emacs $

    git config --global core.editor “~/Applications/Sublime Text/sublime.app” • Seleccionando editor de texto
  4. Creando u obteniendo un proyecto en Git • Hay dos

    maneras de obtener un repositorio Git: ◦ Ir a un directorio o proyecto local que no está bajo un sistema de control de versiones y convertirlo en un repositorio Git con git init, o ◦ Clonar un repositorio de cualquier lugar usando git clone.
  5. Comandos de Git -> obteniendo un repositorio $ git init

    $ git clone http://github.com/jflavio1/Wificonnector.git . • Al crear un repositorio, se crea una carpeta .git oculta. Si la borras, se pierde el tracking que mantiene Git.
  6. Comandos de Git -> operando con archivos $ git add

    archivo1.txt • Añadiendo un archivo al control de versiones • Quitando un archivo del control de versiones $ git rm --cached archivo1.txt • Verificando el estado de mi archivo $ git status $ git status -s ?? nuevos archivos sin trackear A archivo añadido a staging M archivo modificado
  7. Comandos de Git -> confirmando cambios $ git commit -m

    “añadir mi primer archivo archivo1.txt” $ git commit • Confirmar mi cambio
  8. Comandos de Git -> historial $ git log $ git

    log --oneline $ git log --oneline --graph $ git log --pretty=format:”%h - %an : %s” $ git log --pretty=format:”%h - %an : %s” --graph • Ver el historial de commits
  9. Comandos de Git -> modificar último cambio $ git commit

    --amend • Modificar último commit -> añadir un cambio o solo modificar mensaje de commit
  10. Comandos de Git -> deshaciendo cambios $ git reset HEAD

    $ git reset HEAD . $ git reset HEAD miarchivo2.txt • Quitar cambios de staging y volver a la cabecera HEAD o último commit dejando archivos en el Working directory.
  11. Comandos de Git -> deshacer cambios de commit específico $

    git revert commit-hash • Quitar cambios de un commit específico Esto creará un nuevo commit que contendrá el cambio del revert. Es decir, un cambio que deshace un cambio.
  12. Comandos de Git -> explorando el comando git reset •

    Hay 4 formas principales de deshacer cambios usando git reset ◦ git reset --soft ▪ elimina commits posteriores al señalado ▪ conserva cambios en staging ◦ git reset --mixed ▪ elimina commits posteriores al señalado ▪ quita los cambios de staging y los deja en el working directory ◦ git reset --keep ▪ elimina commit posteriores al señalado y los archivos afectados ▪ lleva todos los archivos de staging al working directory y mantiene los existentes que están sin trackear ◦ git reset --hard ▪ elimina commit posteriores al señalado, los archivos afectados, deshace cambios en staging y en el working directory
  13. Comandos de Git -> moviendo o renombrando archivos • Si

    tienes un archivo en staging y es renombrado, Git reconocerá este cambio como un eliminado y una creación de un archivo nuevo
  14. Comandos de Git -> moviendo o renombrando archivos • Si

    se usa directamente git mv oldFilename newFileName, el cambio para git es menos drástico
  15. Comandos de Git -> DETACHED HEAD El estado DETACHED HEAD

    es cuando la referencia HEAD o cabecera está apuntando a un commit anterior en el tiempo en vez de una rama (el último commit de esta).
  16. Comandos de Git -> ramas $ git branch rama2 •

    Crear rama a partir de la actual • Crear rama a partir de la actual y entrar en ella $ git checkout -b rama2 • Ver lista de ramas $ git branch $ git branch -a
  17. Comandos de Git -> merge en un solo commit $

    git merge --no-ff ramaAMezclarConLaActual • Para mantener una referencia a todos los cambios de una rama en un solo commit, mezclar usando --no-ff
  18. Comandos de Git -> operaciones extras con ramas $ git

    branch -d rama2 • Eliminar una rama • Forzar eliminar rama así no se haya hecho merge y se pierdan sus cambios $ git branch -D rama2 • Cambiar de nombre a la rama $ git branch -m nombreActual nombreNuevo
  19. Comandos de Git -> escogiendo cambios específicos con cherry-pick Teniendo

    la rama master y creando featureUno y featureDos a partir de ella
  20. Comandos de Git -> operando repositorios remotos $ git clone

    https://github.com/jflavio1/GitPractice.git • Clonando un repositorio en carpeta nueva • Añadir un origen remoto a un proyecto git existente existente $ git remote add miOrigen2 https://github.com/jflavio1/GitPractice.git • Ver lista de repositorios remotos $ git remote -v
  21. Comandos de Git -> traer y enviar cambios a remoto

    $ git fetch miOrigen $ git fetch miOrigen branchUno • Traer cambios de un origen • Traer y mezclar cambios de un origen a mi branch local actual $ git pull miOrigin branchUno $ git push miOrigen miBranch • Subir cambios confirmados
  22. Comandos de Git -> otras operaciones con remoto $ git

    remote rename origen3 origenGitlab • Renombrar origen remoto • Eliminar un origen remoto $ git remote remove origenGitlab
  23. Comandos de Git -> guardando cambios sin confirmar: STASH $

    git stash • Guardar cambios de archivos en el working directory y staging sin tener que confirmarlos • Ver lista de cambios sin guardar $ git stash list $ git stash pop <stash-id> • Obtener los cambios guardados y eliminarlos de la lista • Sólo obtener los cambios guardados $ git stash apply <stash-id>
  24. Comandos de Git -> diferencia entre cambios $ git dif

    • Todas las diferencias entre HEAD y el ahora (working directory y staging) • Diferencias entre un commit o HEAD y cambios añadidos (staging area) $ git diff --cached <commit-hash> $ git diff <commit-hash1> <commit-hash2> • Ver cambios entre dos commits arbitrarios $ git diff --name-only $ git diff --name-status $ git diff --no-rename $ git diff --check • Ver información específica entre cambios
  25. Branching • Nuevo feature → newFeature/miFeatureUno • Fix desde branch

    de desarrollo → coldFix/miFixisto • Fix desde producción → hotFix/miHotFix • Release candidate → rc-01 • Cambios de configuración → config/miConfig1
  26. Tagging • Marcar un momento en el tiempo. • Puedes

    crear para cuando se completa un hito, un sprint, una versión del producto potencialmente instalable, cuando se hace paso a QA, etc. $ git tag v1.0.0 $ git tag list $ git tag push miOrigen v1.0.0
  27. Características de un Pull Request • Debe ser pequeño: en

    promedio, no más de 250 a 300 líneas de código. • Desarmables: de ser posible, se debe dividir el PR en otros más pequeños. • Responsabilidad única: el PR debe cambiar o arreglar una cosa en específico. • Título auto-explicable: el título debería explicar (en resumen) lo que hace el PR. • Descripción: Detallar QUÉ se ha cambiado, POR QUÉ se ha cambiado y CÓMO se ha cambiado. Además de los links a Jira, fechas, etc.
  28. Labels y Milestones • Los Labels o etiquetas sirven para

    identificar o agrupar por temas un conjunto de Issues o Pull Requests.
  29. Labels y Milestones • Los Milestones son usados para agrupar

    un grupo de issues a un Hito en particular para tener conocimiento de su avance. Puedes agrupar por una versión que se quiera sacar, un fix grande que requiera de varios cambios, un sprint X, etc.