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

Git & GitHub 101

Git & GitHub 101

Introducción a Git y GitHub durante la conferencia Hello NSCoders II, en Barcelona en Julio de 2011.

Victor Jalencas

March 14, 2012
Tweet

More Decks by Victor Jalencas

Other Decks in Programming

Transcript

  1. git vs subversion svn git trabaja offline ✘ ✔ directorios

    limpios ✘ ✔ repositorios pequeños ✘ ✔ resistente a corrupción ✘ ✔ gestión de ramas fácil ✘ ✔ backup fácil ✔ ✔ velocidad ✘ ✔ interfaz sencilla ✔ ✘
  2. - ) '.,  "     

      http://redmonk.com/sogrady/2011/06/02/blackduck-webinar/
  3. Puede convenir tener un servidor central: disponibilidad, autoridad, integración Típico:

    servidor en LAN Práctico: git hospedado: GitHub, Unfuddle, repo.or.cz
  4. El mantenedor publica cambios en su repo Contribuidores clonan y

    hacen modicaciones en repo local Contribuidor envía pull request Mantenedor añade remotos y testea localmente Mantenedor publica en su repo Workow de integración
  5. Para proyectos grandes Cada lugarteniente se encarga de un área

    especíca, para la que recibe los pull requests Estos envían cambios al dictador Workow dictador y lugartenientes
  6. 1. Instalador de git-scm.org 2. Xcode 4 3. Homebrew 4.

    github for Mac Instalación de git brew install git
  7. Conguración inicial 3 niveles de conguración: sistema, usuario, proyecto git

    config --global user.name "Perico de los Palotes" git config --global user.email [email protected] git config --global core.editor mate #opcional ssh-keygen # si no tienes claves públicas
  8. Commit git commit git commit -v # Incluye diff en

    mensaje git commit -m “mensaje” # sin editar mensaje
  9. Eliminación de archivos git rm fichero # Del índice y

    el work dir git rm --staged fichero # Solo del índice
  10. git log git log -p -2 # Solo 2 commits,

    forma de patch git log --stat # muestra estadísticas git log --pretty=oneline {short,full,fuller} # más/menos detalle git log --pretty=oneline --graph # muestra esquema Examinando historia
  11. git log --since=2.weeks --until=1.week git log --author fulanito git log

    --committer fulanito git log --grep msg git log -- path Filtros
  12. git reset HEAD file # quita del índice, sin tocar

    nada más git checkout -- file # Descarta cambios en work dir git commit --ammend # Reescribe un Deshaciendo cambios
  13. Son realmente punteros a commits Se pueden visualizar como vías

    de tren El branch principal se suele llamar master, aunque no tiene por que El branch actual tiene un alias, HEAD
  14. git checkout nuevo # HEAD es ahora nuevo git checkout

    -b branchname # 2×1, crea y cambia Cambio de branch
  15. Para cambiar de branch, el working dir ha de estar

    limpio Al cambiar de branch, el working dir reeja lo que hay en el repo Crear branches es barato (41 bytes)
  16. git branch -d viejuno # fallará si no-merged git branch

    -D viejuno # elimina sí o sí Cleanup Si un branch ya no interesa, podemos eliminarlo
  17. Conictos Si hemos cambiado la misma parte del archivo en

    dos branches, git pide ayuda El working dir queda a medias, debemos resolver y conrmar el commit git status is your friend (buscad unmerged)
  18. Conictos Conictos aparecen así: <<<<< HEAD:fichero ancestro 1 ======= ancestro

    2 >>>>>> Para resolver, podemos ayudarnos de git mergetool
  19. ∃ múltiples aproximaciones al branching branches prolongados que se van

    mezclando en master pero siguen por su cuenta Topic branches: Se usan para implementar un solo feature y luego pueden descartarse
  20. Branches remotos branches readonly que trackean branches en repos remotos

    No se actualizan por si mismos (hay que usar git fetch origin)
  21. Branches remotos Si alguien ha avanzado el branch por su

    cuenta, lo tendremos como origin/branch pero nuestro branch no se modica git merge origin/branch
  22. Branches remotos Tracking branch: branch pre-congurado para seguir un branch

    remoto git checkout -b branchname remote/ remotebranchname git checkout --track remote/branchname Si hicimos un clon, master es un tracking branch
  23. Copia tus commits a un remoto especicado git push origin

    mybranch git push origin mybrach:ourbranch
  24. Rebase Historias paralelas en master que interesaría serializar git checkout

    somebranch git rebase master git rebase master somebranch Facilita el trabajo a mantenedores
  25. Achtung! Si los commits ya han sido pusheados, no se

    pueden rebasear. O atente a las consecuencias…
  26. Xcode 3 es totalmente ajeno a git Xcode 4 puede

    trabajar con git, con ciertas limitaciones Xcode 4 no crea .gitignore ni $GIT_DIR/info/exclude
  27. Recombinación y partición de commits Stashes Creación de branches vacíos

    Alias Localización de la primera aparición de un bug Como congurar un servidor central Blame Hooks Recogida de cerezas! Nomenclatura de commits Adición interactiva Aun más alteraciones de la historia Submódulos Más customización