AGitado, pero no revuelto
Una introducción al control de fuentes usando
Git
JJ Merelo
Oficina de Software Libre
http://osl...
Sistema para desarrollo en grupo
o incremental

Git @betabeers

2
+ Sistema para despliegue de
aplicaciones

Git @betabeers

3
¿Por qué?

Git @betabeers

4
Backup instantáneo

Git @betabeers

5
Atribución de trabajo

Git @betabeers

6
Procesado automático de
fuentes.

Git @betabeers

7
Filosofía de trabajo

Git @betabeers

8
Basado en línea de órdenes

Git @betabeers

9
Pero con clientes molones para
quien no le guste

Git @betabeers

10
Alta en GitHub

La red social para programadores:
http://github.com

Git @betabeers

11
Descargar clientes
●

Sudo apt-get install git

●

http://windows.github.com

●

http://mac.github.com

●

http://eclipse....
Git es un sistema de control de
fuentes distribuido

Git @betabeers

13
Hay otros

Mercurial, Bazaar, subversion, CVS

Git @betabeers

14
Pero no molan tanto

Git @betabeers

15
Creando un repositorio

Repo == proyecto

Git @betabeers

16
Clonando a Dolly

git clone git@github.com:JJ/betamilnohs.git

Git @betabeers

17
Añadiendo nuevos ficheros

git add nuevofichero.txt

Git @betabeers

18
Sin compromisos

git commit -a -m “Esto es un cambio”

Git @betabeers

19
¿Y tú de quién eres?

Generar pareja de claves y subirla
https://help.github.com/articles/generating-ssh-keys

Git @betabe...
Empujando a los cambios

Git push origin master

Git @betabeers

21
Antes de la existencia de GitHub
mkdir repo; cd repo; git init; touch README; git
add README; git commit -m “1st”
[Crear r...
Mientras puede haber habido
algún cambio

git pull origin master

Git @betabeers

23
¡Hay un conflicto!

Aparece en el texto y se corrige
+ commit + push

Git @betabeers

24
Hay que ponerse a trabajar

Los “issues” de GitHub están integrados con el git

Git @betabeers

25
Hitos y asuntos

Los issues o tickets se organizan en hitos
(milestones)

Git @betabeers

26
No se cierra hasta que no se
acaba

git commit -m “references | fixes | closes #xxx”

Git @betabeers

27
Procediendo por pasos
●

Fetch

●

Merge

●

Rebase

●

checkout

Git @betabeers

28
Creando un fork

git checkout -b conlimon
[se añade limón de la Alpujarra]
git push origin conlimon

Git @betabeers

29
Más fácil en GitHub

Git @betabeers

30
Integración continua

Tests/compilaciones/cosas

Git @betabeers

31
Así se integraba, así así

Provisionamiento + checkout + ejecución de
tests

Git @betabeers

32
Y en GitHub
●

Configuración del repo
–

●

Activación del hook
–

●

.travis.yml
Alta con ID de GitHub

Git push

Git @be...
Muchos más hooks
●

Twitter.

●

Calidad de código.

●

Trabajo colaborativo.

●

Despliegue en cloud.

●

Muchos más que ...
Publicando que es gerundio
●

GitHub integra gh-pages

●

Simplemente una rama del repositorio

●

Basada en jekyll, un ge...
Hooks locales
●

Ejecutando código antes o después de evento

●

Scripts en el directorio .git/hooks con nombre del evento...
No me mola GitHub
●

Gitorious

●

Bitbucket

●

Google Code, SourceForge...

●

Hágalo usted mismo: GitLab

Git @betabeer...
Un proyecto: escribir una novela
#slash: la muerta de verdad
http://amzn.to/1bOWYrE

Git @betabeers

38
Mientras viene la musa
●

Post-commit hooks: generación de gh-pages.

●

Script para commit: formateo del fichero del dicc...
Miedo a la página en blanco

Git @betabeers

40
¡Quiero aprender git ya!

http://cevug.ugr.es/git
Git @betabeers

41
¿Te gusta? Ponme una estrellita

¿No te gusta? Haz un fork y lo cambias.

Git @betabeers

42
Eso es todo

¿Alguna pregunta?

Git @betabeers

43
Upcoming SlideShare
Loading in …5
×

Introducción al uso de git, el sistema de control de fuentes más molón.

884 views
722 views

Published on

Git mola, GitHub también, y se puede usar para escribir novelas.

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
884
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
5
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide
  • En general, desarrollo de software, pero también cualquier tipo de desarrollo
  • En general, desarrollo de software, pero también cualquier tipo de desarrollo
  • En general, desarrollo de software, pero también cualquier tipo de desarrollo
  • En general, desarrollo de software, pero también cualquier tipo de desarrollo
  • GitHub no es el único sistema gratuito (freemium, en realidad) de alojamiento de Git. También está Google Code, Sourceforge, Bitbucket (que te permite diferentes repos privados) o Gitorius (basado en un backend libre). Lo que ocurre es que GitHub es simplemente el mejor y por eso también el más popular.
  • Lo fácil es instalarlo en Linux, pero también puedes instalarlo para cualquier otro tipo de cliente y sistema de desarrollo.
    Por supuesto, también en emacs
    http://blog.art-of-coding.eu/using-git-and-github-in-emacs/
    También hay clientes de Git no específicos de GitHub, pero no permiten aprovechar todas estas capacidades.
  • Pero generalmente se usa como si fuera un sistema centralizado. Eso no quiere decir que no se pueda usar como uno quiera. En general, se puede sincronizar ocn cualquier ordenador al que se tenga (o al que se dé) acceso
  • Aunque tiene repositorios “benditos” que son como una especie de repo centralizado
  • Pero generalmente se usa como si fuera un sistema centralizado. Eso no quiere decir que no se pueda usar como uno quiera. En general, se puede sincronizar ocn cualquier ordenador al que se tenga (o al que se dé) acceso
  • Repositorio = repo para los amigos. No hace falta crear un repositorio para empezar a trabajar, nos pueden añadir a otro. Pero empecemos así.
    Cuando diga si se va a crear un README, decidle que sí.
    En GitHub los proyectos son públicos por omisión. Sólo permiten un repositorio privado en las cuentas de pago o bien para enseñanza.
  • Mi repositorio de té abierto. Cada cual tendrá el suyo. Es importante tener en cuenta que un repositorio puede tener diferentes URLs con diferentes privilegios.
    Si se usa un cliente de Git o Github habrá que configurarlo con la dirección del repositorio y usar “clone” del menú.
    Esa es también la estructura de las órdenes de git
    Git + comando + url + rama
    Hay, por otro lado, diferentes formas de clonar un repositorio. En este caso lo hace usando ssh por debajo, lo que te permite más adelante subir los cambios sin necesidad de introducir la clave. Dependiendo del URL los privilegios serán diferentes. Por ejemplo, git:// será un clon de sólo lectura y https:// no te permitirá más adelante usar la clave pública/privada para enviar info fácilmente. Esta línea de órdenes se puede usar tanto en Linux como para un cliente que se crea en Windows de línea de órdenes similar al bash de Linux.
  • Comodines y toda la pesca. Puedes añadir directorios completos.
    Todo esto se puede hacer también desde el interfaz gráfico con apunta y dale al botón, claro.
  • Un commit es un punto de cambio en el repositorio local, igual que todos los comandos anteriores. En ningún caso hemos subido nada a github todavía. Sólo establecemos un punto de control para volver en caso necesario.
  • Se puede usar la autentificación por https, pero es un poco latosa porque hay que meter el nombre de usuario y clave de cada vez. No es necesario en caso de que uses un cliente github.
  • Se trata de enviarlo al repositorio. En general, puedes hacerlo a cualquier repositorio, pero en este caso lo haremos al GitHub.
    Con git push en la mayor parte de los casos es suficiente. Por otro lado, un repositorio puede tener varios orígenes. Si estás trabajando con GitHub y quieres, por ejemplo, subir las cosas a Gitorious no tienes más que hacer
    Git remote add origin [URL]
    http://caiustheory.com/adding-a-remote-to-existing-git-repo
  • Para más info y comentarios, https://help.github.com/articles/create-a-repo
    En vez de https puede que sea más conveniente usar alguna de las otras URLs. En todo caso, la que te dé el repositorio.
    Generalmente, por cierto, es más cómodo hacerlo de otra forma, pero esta es la forma también de tener un repo local sin necesidad de subirlo a ningún sitio.
  • Git pull es git fetch + git merge http://stackoverflow.com/questions/292357/whats-the-difference-between-git-pull-and-git-fetch
  • Los conflictos se producen en los ficheros binarios o cuando dos usuarios han modificado el mismo grupo de líneas. Se puede producir tanto en el pull como en el push, siempre que haya habido una divergencia.
    Se puede liar todavía más parda, pero lo dejamos para más adelante.
  • Un issue es simplemente una orden de trabajo. En principio es para una persona, pero se puede en el mismo mencionar a otras personas mediante @username; esas personas recibirán notificaciones (creo)
  • No es obligatorio, pero es conveniente. U hito puede ser un hito del proyecto, o una tarea.
    El principal problema es que, a diferencia de otros sistemas de gestión más avanzados (como redmine) no se organizan de forma jerárquica, con lo que la cosa está (relativamente) limitada.
  • Esos commits aparecen en la página web y se pueden, a su vez, comentar o actuar de alguna forma sobre ellos. Este tipo de commits aparecen con un tipo de letra especial.
  • https://help.github.com/articles/fork-a-repo
  • Imagen de Drawception http://drawception.com/viewgame/qmYBxLcYO6/fork-me-on-github/
    Se suele usar una “cinta” que, curiosamente, también se puede hacer en CSS http://unindented.org/articles/github-ribbon-using-css-transforms/
  • Cada vez que se hace un push se puede activar un “trigger” que hace una serie de cosas: pasar tests, por ejemplo. Se puede usar http://travis-ci.org o cualquier otro servicio de integración continua (en tu propio servidor o en la nube)
  • Introducción al uso de git, el sistema de control de fuentes más molón.

    1. 1. AGitado, pero no revuelto Una introducción al control de fuentes usando Git JJ Merelo Oficina de Software Libre http://osl.ugr.es
    2. 2. Sistema para desarrollo en grupo o incremental Git @betabeers 2
    3. 3. + Sistema para despliegue de aplicaciones Git @betabeers 3
    4. 4. ¿Por qué? Git @betabeers 4
    5. 5. Backup instantáneo Git @betabeers 5
    6. 6. Atribución de trabajo Git @betabeers 6
    7. 7. Procesado automático de fuentes. Git @betabeers 7
    8. 8. Filosofía de trabajo Git @betabeers 8
    9. 9. Basado en línea de órdenes Git @betabeers 9
    10. 10. Pero con clientes molones para quien no le guste Git @betabeers 10
    11. 11. Alta en GitHub La red social para programadores: http://github.com Git @betabeers 11
    12. 12. Descargar clientes ● Sudo apt-get install git ● http://windows.github.com ● http://mac.github.com ● http://eclipse.github.com ● http://mobile.github.com Git @betabeers 12
    13. 13. Git es un sistema de control de fuentes distribuido Git @betabeers 13
    14. 14. Hay otros Mercurial, Bazaar, subversion, CVS Git @betabeers 14
    15. 15. Pero no molan tanto Git @betabeers 15
    16. 16. Creando un repositorio Repo == proyecto Git @betabeers 16
    17. 17. Clonando a Dolly git clone git@github.com:JJ/betamilnohs.git Git @betabeers 17
    18. 18. Añadiendo nuevos ficheros git add nuevofichero.txt Git @betabeers 18
    19. 19. Sin compromisos git commit -a -m “Esto es un cambio” Git @betabeers 19
    20. 20. ¿Y tú de quién eres? Generar pareja de claves y subirla https://help.github.com/articles/generating-ssh-keys Git @betabeers 20
    21. 21. Empujando a los cambios Git push origin master Git @betabeers 21
    22. 22. Antes de la existencia de GitHub mkdir repo; cd repo; git init; touch README; git add README; git commit -m “1st” [Crear repo en GitHub] git remote add origin https://github.com/username/myrepo.git Git @betabeers 22
    23. 23. Mientras puede haber habido algún cambio git pull origin master Git @betabeers 23
    24. 24. ¡Hay un conflicto! Aparece en el texto y se corrige + commit + push Git @betabeers 24
    25. 25. Hay que ponerse a trabajar Los “issues” de GitHub están integrados con el git Git @betabeers 25
    26. 26. Hitos y asuntos Los issues o tickets se organizan en hitos (milestones) Git @betabeers 26
    27. 27. No se cierra hasta que no se acaba git commit -m “references | fixes | closes #xxx” Git @betabeers 27
    28. 28. Procediendo por pasos ● Fetch ● Merge ● Rebase ● checkout Git @betabeers 28
    29. 29. Creando un fork git checkout -b conlimon [se añade limón de la Alpujarra] git push origin conlimon Git @betabeers 29
    30. 30. Más fácil en GitHub Git @betabeers 30
    31. 31. Integración continua Tests/compilaciones/cosas Git @betabeers 31
    32. 32. Así se integraba, así así Provisionamiento + checkout + ejecución de tests Git @betabeers 32
    33. 33. Y en GitHub ● Configuración del repo – ● Activación del hook – ● .travis.yml Alta con ID de GitHub Git push Git @betabeers 33
    34. 34. Muchos más hooks ● Twitter. ● Calidad de código. ● Trabajo colaborativo. ● Despliegue en cloud. ● Muchos más que no sé lo que hacen. Git @betabeers 34
    35. 35. Publicando que es gerundio ● GitHub integra gh-pages ● Simplemente una rama del repositorio ● Basada en jekyll, un generador estático de HTML desde MarkDown. ● GitHub entiende muchos formatos: GeoJSON, figuras 3D, formatos de documentación como Textile, mediawiki, POD o rdoc. Git @betabeers 35
    36. 36. Hooks locales ● Ejecutando código antes o después de evento ● Scripts en el directorio .git/hooks con nombre del evento Git @betabeers 36
    37. 37. No me mola GitHub ● Gitorious ● Bitbucket ● Google Code, SourceForge... ● Hágalo usted mismo: GitLab Git @betabeers 37
    38. 38. Un proyecto: escribir una novela #slash: la muerta de verdad http://amzn.to/1bOWYrE Git @betabeers 38
    39. 39. Mientras viene la musa ● Post-commit hooks: generación de gh-pages. ● Script para commit: formateo del fichero del diccionario. ● Integración en un módulo Perl para... ● … integración continua con Travis ● Commits a Twitter: @hshslsh ● https://github.com/JJ/HashSlash Git @betabeers 39
    40. 40. Miedo a la página en blanco Git @betabeers 40
    41. 41. ¡Quiero aprender git ya! http://cevug.ugr.es/git Git @betabeers 41
    42. 42. ¿Te gusta? Ponme una estrellita ¿No te gusta? Haz un fork y lo cambias. Git @betabeers 42
    43. 43. Eso es todo ¿Alguna pregunta? Git @betabeers 43

    ×