SlideShare una empresa de Scribd logo
---
+++
¿QUÉ ES GIT?




Lo primero que nos preguntamos es qué es exactamente Git.
Git es un sistema de control de
         versiones distribuido de código
            abierto diseñado para ser
                rápido y eficiente



- Un sistema de control de versiones permite a sus usuarios almacenar revisiones diferentes
de un mismo archivo y compararlas, restaurarlas y, a veces, mezclarlas.
¿POR QUÉ GIT?
No es Subversion
                       (o CVS, o RCS, o copiar directorios)




- Subversion fue creado hace más de diez años como evolución de CVS (que era una
evolución de RCS), pero al intentar ser una evolución, era un simple “parche” de su padre.
Garantiza la integridad de los datos




Git utiliza hashes SHA1 y en ocasiones criptografía para garantizar que todo el mundo tiene
los mismos datos y que estos no han sido modificados sin el conocimiento de los usuarios.
Quizá para un desarrollo personal esto no tenga sentido, pero para proyectos open source y
empresas sí lo tiene.
Sin repositorio central




Frente a SCM antiguos Git no necesita de un repositorio central o canónico, aunque tampoco
impide designar uno de los clones del repositorio como canónico. Esto permite una
flexibilidad imposible con otros sistemas, y muchas ventajas.
Cada usuario tiene un backup
              completo del repositorio




Los repositorios de cada usuario son un clon completo, y no una copia parcial de la última
versión. En el caso de fallo catastrófico de un supuesto repositorio central, no es necesario
más que clonar un repositorio de uno de los usuarios.
Se puede trabajar offline




El disponer de un repositorio completo, un usuario puede realizar todas las operaciones que
desee con su copia local, y sincronizarla con otras copias cuando vuelva a estar conectado.
¡Es rápido!




Al realizar todas las operaciones en local, no es necesario esperar al servidor para ver un log
de cambios, comparar con una versión anterior y otras operaciones.
PRIMEROS PASOS
Si habéis instalado Xcode 4 ya disponéis de un Git suficiente moderno para utilizar, y no hay
que hacer mucho más.
Personalmente el soporte de Xcode 4 me parece de broma. La vista de comparar versiones es
la única que posiblemente se salva, y no es tan buena. Ni siquiera es capaz de manejar muy
bien conflictos en el archivo de proyecto, lo que hace que el 50% de la veces casque.
GITX (L)
                                http://gitx.laullon.com


Mi recomendación es utilizar la Terminal y GitX. GitX es un cliente gráfico para Git, muy bien
enfocado y sencillo. No puede hacer todas las cosas, pero las que hace, las hace muy bien.
Hay muchas versiones de GitX. La original está más o menos abandonada. Luego apareció la
de brotherbard, y la que utilizo últimamente es la de Laullón.
Esta es la vista de para hacer commits. Cuando trabajo con Xcode siempre mantengo una
terminal en el directorio por si necesito teclear algún comando y GitX con el proyecto abierto.
INSTALACIÓN
                                 http://git-scm.com


Si queréis una versión más moderna podeis instalar Git desde el código fuente o un sistema
de paquetes como Homebrew.
$ git config --global user.name "Juan Pérez"
$ git config --global user.email juan.perez@example.com




Algo que no he encontrado como hacer en Xcode. Esto toca hacerlo en el Terminal. Sólo es
necesario hacerlo una vez.
$ git config --global core.editor                         "mate -w"
                              # o                         "nano -w"
                              # o                         "emacs"
                              # o                         "vim"




Otras configuraciones globales si os gusta trabajar en la terminal es elegir el editor que Git
invocará cuando necesite que editeis algún mensaje de commit o similares…
$ git config --global merge.tool opendiff




Y la herramienta que utilizará para mostrar las mezclas conflictivas (opendiff es una
herramienta gráfica que se instala con Xcode)
$ git config --global color.ui auto




Y finalmente para darle un toque de color a esa triste terminal.
UN WORKFLOW




Hay muchos posibles workflows con Git. Cada uno adecuando a un modo de desarrollar y a
un tipo de equipo. El kernel de Linux no utiliza repositorio centrales y forma una especie de
pirámide de responsables y utiliza “pull requests” mediante el correo electrónico. En
empresas lo normal es un repositorio central. Y hay muchas más. Git te da la libertad de
diseñar tu propio workflow.
GIT INIT

$ mkdir PajaritosCabreados; cd PajaritosCabreados
$ git init
Initialized empty Git repository in /Users/daniel/
PajaritosCabreados/.git/
$




Desde la terminal crear un repositorio es tan sencillo como crear un directorio y ejecutar “git
init” dentro de él. Git creará un directorio oculto dónde almacenará toda la información que él
necesite.
Desde Xcode, cuando se crea un nuevo proyecto y vamos a elegir un directorio para
almacenarlo se puede elegir crear un repositorio para el proyecto. A menos de que tengáis
una razón muy buena, todos los nuevos proyectos deberían estar bajo control de versiones,
aunque simplemente sea local.
Vamos a crear nuestro primer archivo, en el que incluiremos algún contenido.
GIT STATUS
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be
committed)
#
# main.m
nothing added to commit but untracked files present
(use "git add" to track)
$


Desde la terminal, en cualquier momento podemos ejecutar “git status” para comprobar en
que estado están nuestros archivos. Git incluye mucha información en él: la rama en la que
estamos, el número de commits por delante o por detrás de la rama del repositorio remoto,…
pero sobre todo el estado de los archivos. En este momento lo que nos dice es que hay un
archivo main.m del que no sabe nada.
GIT ADD



$ git add main.m
$




La primera orden a aprender es “git add”. Git no incluye ningún contenido al repositorio al
que no hayamos hecho un “git add”. La forma más normal es “git add nombre.archivo”, que
añade todos los cambios del archivo al “staging area” de Git.
$   git status
#   On branch master
#
#   Initial commit
#
#   Changes to be committed:
#     (use "git rm --cached <file>..." to unstage)
#
#   new file:           main.m
#
$



Si ejecutamos “git status” a continuación veremos que Git lo marca como “new file”.
Pero me he dado cuenta de que me faltaba una pequeña cosa, así que voy a editar de nuevo
el archivo y añadir una línea más.
$ git status
# On branch master
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
# new file:    main.m
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be
committed)
#   (use "git checkout -- <file>..." to discard changes
in working directory)
#
# modified:    main.m
#
$

En este momento si ejecutamos “git status” veremos algo curioso: un archivo está en dos
estados para Git: nuevo y modificado. Esta es una de las principales diferencias de Git, y una
de sus mejores características. Git no sigue a los archivos, sino a los contenidos; y el archivo
main.m tiene un contenido que hemos añadido al “staging area”, pero otro contenido (la línea
de la anterior diapositiva) que no, así que considera que el archivo está modificado. Podemos
añadir esa línea haciendo otro “git add”.
GIT COMMIT



$ git commit




Finalmente, para crear una nueva revisión se ejecutará “git commit”, que toma todos los
cambios del “staging area” y crea una revisión con ellos. Ningún cambio en el directorio de
trabajo que no esté en el “staging area” se incluirá en la revisión.
Git nos abrirá nuestro editor de texto dónde podremos escribir una pequeña descripción del
cambio realizado y sus motivos.
GIT COMMIT


$ git commit
[master (root-commit) 9108af0] Main function
  1 files changed, 8 insertions(+), 0 deletions(-)
  create mode 100644 main.m
$
…RINSE AND REPEAT




Ya solo queda repetir el proceso de modificar los archivos, añadir los cambios al “staging
area” y crear las nuevas revisiones.
¡AYUDA!




Git es muy amplio, esto es el proceso más sencillo y habitual, pero falta mucho por explicar
como los remotos, las ramas y muchas otras cosas.
Si necesitáis ayuda tenéis varios recursos a vuestra disposición.
$ git help <orden>
$ git <orden> --help




El primero es la ayuda en línea de Git. Con “git help” o “git --help” se pueden leer las páginas
de manual de Git. Las páginas de los mandatos básicos están muy bien redactadas e incluyen
ejemplos en la parte final.
DOCUMENTACIÓN
                       http://git-scm.com/documentation


Si preferís Internet el sitio de Git incluye mucha documentación y enlaces a tutoriales propios
y externos.
PRO GIT
                                    http://progit.org


Finalmente existe Pro Git, un libro gratuito que trata Git desde novato a experto. Existe una
versión en ePub muy bien preparada para el iPad.

Más contenido relacionado

PPTX
Introducción a git y git hub
PPTX
Introducción a GIT
PPTX
Git / Guía Básica
ODP
Introducción al uso Git y GitHub para trabajo colaborativo
PDF
Mini-tutorial de git
PDF
Control de versiones con Git y Github
PDF
Introducción a git
PDF
Introducción a Git
Introducción a git y git hub
Introducción a GIT
Git / Guía Básica
Introducción al uso Git y GitHub para trabajo colaborativo
Mini-tutorial de git
Control de versiones con Git y Github
Introducción a git
Introducción a Git

La actualidad más candente (20)

PPTX
PPT Git GitHub
ODP
Uso de git (Cursos de e-ghost 2011)
PPTX
Git: un enfoque práctico
PDF
WorkShop: Introducción a GIT
PDF
Git with Scrum en español
PDF
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
ODP
Git: control de versiones
PPTX
Fundamentos de GIt y Github
PDF
Curso: Publicando mi proyecto web en Github
PDF
Tallerintroducciongit
ODP
Taller breve de introduccion a Git
PDF
Git + Github - Betabeers Córdoba XII
PDF
Primeros pasos con git
PPTX
Control de versiones con Git
PDF
Uso practico de git
ODP
Administra tu código con Git y Github
PDF
Control de versiones con GIT
PDF
El git nuestro de cada dia
PDF
Introducción a Git
PPTX
Configurando un repositorio de git hub usando netbeans ide
PPT Git GitHub
Uso de git (Cursos de e-ghost 2011)
Git: un enfoque práctico
WorkShop: Introducción a GIT
Git with Scrum en español
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git: control de versiones
Fundamentos de GIt y Github
Curso: Publicando mi proyecto web en Github
Tallerintroducciongit
Taller breve de introduccion a Git
Git + Github - Betabeers Córdoba XII
Primeros pasos con git
Control de versiones con Git
Uso practico de git
Administra tu código con Git y Github
Control de versiones con GIT
El git nuestro de cada dia
Introducción a Git
Configurando un repositorio de git hub usando netbeans ide
Publicidad

Similar a Git para-principiantes (20)

PDF
Git y github básico
PDF
GIT presentación de teoría y practica.pdf
PPTX
Presentacion #2 github Aplicaciones Seguras
PDF
FULL STACK PYTHON - Clase dedicada a GitHub
PDF
APRENDE INTEGRADOR CON NOSTROS FACIL Y RAPIDO
PPTX
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
PDF
Git & GitHub Part II
ODP
Aprendiendo GIT
PDF
Control de versiones utilizando Git
PDF
Git.manual.usuario
PDF
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
PPTX
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
PPTX
Git res baz ec - final
PDF
Introducción al desarrollo de software en comunidad con forja de software y git
PDF
02 versionamientoy usogit_i_parte
PPTX
Git y Github basico.pptx
DOCX
Configuración de github
PDF
Mejora tu productividad con git
PDF
Taller Git en la URJC
Git y github básico
GIT presentación de teoría y practica.pdf
Presentacion #2 github Aplicaciones Seguras
FULL STACK PYTHON - Clase dedicada a GitHub
APRENDE INTEGRADOR CON NOSTROS FACIL Y RAPIDO
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Git & GitHub Part II
Aprendiendo GIT
Control de versiones utilizando Git
Git.manual.usuario
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
GuiaPrincipiantesGitHubrfuenzalidadev.pptx
Git res baz ec - final
Introducción al desarrollo de software en comunidad con forja de software y git
02 versionamientoy usogit_i_parte
Git y Github basico.pptx
Configuración de github
Mejora tu productividad con git
Taller Git en la URJC
Publicidad

Último (20)

PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PDF
capacitación de aire acondicionado Bgh r 410
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
El uso de las TIC en la vida cotidiana..
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
DOCX
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
PPTX
unidad 3 tecnología 8° básico: planificación y elaboración de un objeto
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPTX
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
PPTX
Curso de generación de energía mediante sistemas solares
PDF
MANUAL de recursos humanos para ODOO.pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
informe_fichas1y2_corregido.docx (2) (1).pdf
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
capacitación de aire acondicionado Bgh r 410
TRABAJO DE TECNOLOGIA.pdf...........................
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Guía 5. Test de orientación Vocacional 2.docx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Sesion 1 de microsoft power point - Clase 1
El uso de las TIC en la vida cotidiana..
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
unidad 3 tecnología 8° básico: planificación y elaboración de un objeto
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
CLAASIFICACIÓN DE LOS ROBOTS POR UTILIDAD
Curso de generación de energía mediante sistemas solares
MANUAL de recursos humanos para ODOO.pdf
historia_web de la creacion de un navegador_presentacion.pptx

Git para-principiantes

  • 2. ¿QUÉ ES GIT? Lo primero que nos preguntamos es qué es exactamente Git.
  • 3. Git es un sistema de control de versiones distribuido de código abierto diseñado para ser rápido y eficiente - Un sistema de control de versiones permite a sus usuarios almacenar revisiones diferentes de un mismo archivo y compararlas, restaurarlas y, a veces, mezclarlas.
  • 5. No es Subversion (o CVS, o RCS, o copiar directorios) - Subversion fue creado hace más de diez años como evolución de CVS (que era una evolución de RCS), pero al intentar ser una evolución, era un simple “parche” de su padre.
  • 6. Garantiza la integridad de los datos Git utiliza hashes SHA1 y en ocasiones criptografía para garantizar que todo el mundo tiene los mismos datos y que estos no han sido modificados sin el conocimiento de los usuarios. Quizá para un desarrollo personal esto no tenga sentido, pero para proyectos open source y empresas sí lo tiene.
  • 7. Sin repositorio central Frente a SCM antiguos Git no necesita de un repositorio central o canónico, aunque tampoco impide designar uno de los clones del repositorio como canónico. Esto permite una flexibilidad imposible con otros sistemas, y muchas ventajas.
  • 8. Cada usuario tiene un backup completo del repositorio Los repositorios de cada usuario son un clon completo, y no una copia parcial de la última versión. En el caso de fallo catastrófico de un supuesto repositorio central, no es necesario más que clonar un repositorio de uno de los usuarios.
  • 9. Se puede trabajar offline El disponer de un repositorio completo, un usuario puede realizar todas las operaciones que desee con su copia local, y sincronizarla con otras copias cuando vuelva a estar conectado.
  • 10. ¡Es rápido! Al realizar todas las operaciones en local, no es necesario esperar al servidor para ver un log de cambios, comparar con una versión anterior y otras operaciones.
  • 12. Si habéis instalado Xcode 4 ya disponéis de un Git suficiente moderno para utilizar, y no hay que hacer mucho más. Personalmente el soporte de Xcode 4 me parece de broma. La vista de comparar versiones es la única que posiblemente se salva, y no es tan buena. Ni siquiera es capaz de manejar muy bien conflictos en el archivo de proyecto, lo que hace que el 50% de la veces casque.
  • 13. GITX (L) http://gitx.laullon.com Mi recomendación es utilizar la Terminal y GitX. GitX es un cliente gráfico para Git, muy bien enfocado y sencillo. No puede hacer todas las cosas, pero las que hace, las hace muy bien. Hay muchas versiones de GitX. La original está más o menos abandonada. Luego apareció la de brotherbard, y la que utilizo últimamente es la de Laullón.
  • 14. Esta es la vista de para hacer commits. Cuando trabajo con Xcode siempre mantengo una terminal en el directorio por si necesito teclear algún comando y GitX con el proyecto abierto.
  • 15. INSTALACIÓN http://git-scm.com Si queréis una versión más moderna podeis instalar Git desde el código fuente o un sistema de paquetes como Homebrew.
  • 16. $ git config --global user.name "Juan Pérez" $ git config --global user.email juan.perez@example.com Algo que no he encontrado como hacer en Xcode. Esto toca hacerlo en el Terminal. Sólo es necesario hacerlo una vez.
  • 17. $ git config --global core.editor "mate -w" # o "nano -w" # o "emacs" # o "vim" Otras configuraciones globales si os gusta trabajar en la terminal es elegir el editor que Git invocará cuando necesite que editeis algún mensaje de commit o similares…
  • 18. $ git config --global merge.tool opendiff Y la herramienta que utilizará para mostrar las mezclas conflictivas (opendiff es una herramienta gráfica que se instala con Xcode)
  • 19. $ git config --global color.ui auto Y finalmente para darle un toque de color a esa triste terminal.
  • 20. UN WORKFLOW Hay muchos posibles workflows con Git. Cada uno adecuando a un modo de desarrollar y a un tipo de equipo. El kernel de Linux no utiliza repositorio centrales y forma una especie de pirámide de responsables y utiliza “pull requests” mediante el correo electrónico. En empresas lo normal es un repositorio central. Y hay muchas más. Git te da la libertad de diseñar tu propio workflow.
  • 21. GIT INIT $ mkdir PajaritosCabreados; cd PajaritosCabreados $ git init Initialized empty Git repository in /Users/daniel/ PajaritosCabreados/.git/ $ Desde la terminal crear un repositorio es tan sencillo como crear un directorio y ejecutar “git init” dentro de él. Git creará un directorio oculto dónde almacenará toda la información que él necesite.
  • 22. Desde Xcode, cuando se crea un nuevo proyecto y vamos a elegir un directorio para almacenarlo se puede elegir crear un repositorio para el proyecto. A menos de que tengáis una razón muy buena, todos los nuevos proyectos deberían estar bajo control de versiones, aunque simplemente sea local.
  • 23. Vamos a crear nuestro primer archivo, en el que incluiremos algún contenido.
  • 24. GIT STATUS $ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # main.m nothing added to commit but untracked files present (use "git add" to track) $ Desde la terminal, en cualquier momento podemos ejecutar “git status” para comprobar en que estado están nuestros archivos. Git incluye mucha información en él: la rama en la que estamos, el número de commits por delante o por detrás de la rama del repositorio remoto,… pero sobre todo el estado de los archivos. En este momento lo que nos dice es que hay un archivo main.m del que no sabe nada.
  • 25. GIT ADD $ git add main.m $ La primera orden a aprender es “git add”. Git no incluye ningún contenido al repositorio al que no hayamos hecho un “git add”. La forma más normal es “git add nombre.archivo”, que añade todos los cambios del archivo al “staging area” de Git.
  • 26. $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: main.m # $ Si ejecutamos “git status” a continuación veremos que Git lo marca como “new file”.
  • 27. Pero me he dado cuenta de que me faltaba una pequeña cosa, así que voy a editar de nuevo el archivo y añadir una línea más.
  • 28. $ git status # On branch master # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: main.m # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: main.m # $ En este momento si ejecutamos “git status” veremos algo curioso: un archivo está en dos estados para Git: nuevo y modificado. Esta es una de las principales diferencias de Git, y una de sus mejores características. Git no sigue a los archivos, sino a los contenidos; y el archivo main.m tiene un contenido que hemos añadido al “staging area”, pero otro contenido (la línea de la anterior diapositiva) que no, así que considera que el archivo está modificado. Podemos añadir esa línea haciendo otro “git add”.
  • 29. GIT COMMIT $ git commit Finalmente, para crear una nueva revisión se ejecutará “git commit”, que toma todos los cambios del “staging area” y crea una revisión con ellos. Ningún cambio en el directorio de trabajo que no esté en el “staging area” se incluirá en la revisión.
  • 30. Git nos abrirá nuestro editor de texto dónde podremos escribir una pequeña descripción del cambio realizado y sus motivos.
  • 31. GIT COMMIT $ git commit [master (root-commit) 9108af0] Main function 1 files changed, 8 insertions(+), 0 deletions(-) create mode 100644 main.m $
  • 32. …RINSE AND REPEAT Ya solo queda repetir el proceso de modificar los archivos, añadir los cambios al “staging area” y crear las nuevas revisiones.
  • 33. ¡AYUDA! Git es muy amplio, esto es el proceso más sencillo y habitual, pero falta mucho por explicar como los remotos, las ramas y muchas otras cosas. Si necesitáis ayuda tenéis varios recursos a vuestra disposición.
  • 34. $ git help <orden> $ git <orden> --help El primero es la ayuda en línea de Git. Con “git help” o “git --help” se pueden leer las páginas de manual de Git. Las páginas de los mandatos básicos están muy bien redactadas e incluyen ejemplos en la parte final.
  • 35. DOCUMENTACIÓN http://git-scm.com/documentation Si preferís Internet el sitio de Git incluye mucha documentación y enlaces a tutoriales propios y externos.
  • 36. PRO GIT http://progit.org Finalmente existe Pro Git, un libro gratuito que trata Git desde novato a experto. Existe una versión en ePub muy bien preparada para el iPad.