Introducción al uso Git y GitHub para trabajo colaborativo

Embed Size (px)

Citation preview

AGitAdo, pero no revuelto

Una introduccin al control de fuentes usando Git

JJ MereloOficina de Software Librehttp://osl.ugr.es

Sistema para gestionar trabajo en grupo

En general, desarrollo de software, pero tambin cualquier tipo de desarrollo

+ Sistema para despliegue de aplicaciones

En general, desarrollo de software, pero tambin cualquier tipo de desarrollo

Basado en lnea de rdenes

En general, desarrollo de software, pero tambin cualquier tipo de desarrollo

Pero con clientes molones para quien no le guste

En general, desarrollo de software, pero tambin cualquier tipo de desarrollo

Alta en GitHub

La red social para programadores:

http://github.com

GitHub no es el nico sistema gratuito (freemium, en realidad) de alojamiento de Git. Tambin 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 tambin el ms popular.

Descargar clientes

Sudo apt-get install git

http://windows.github.com

http://mac.github.com

http://eclipse.github.com

http://mobile.github.com

Lo fcil es instalarlo en Linux, pero tambin puedes instalarlo para cualquier otro tipo de cliente y sistema de desarrollo.Por supuesto, tambin en emacs http://blog.art-of-coding.eu/using-git-and-github-in-emacs/ Tambin hay clientes de Git no especficos de GitHub, pero no permiten aprovechar todas estas capacidades.

Git es un sistema de control de fuentes distribuido

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

Creando un repositorio

Repo == proyecto

Repositorio = repo para los amigos. No hace falta crear un repositorio para empezar a trabajar, nos pueden aadir a otro. Pero empecemos as.Cuando diga si se va a crear un README, decidle que s.En GitHub los proyectos son pblicos por omisin. Slo permiten un repositorio privado en las cuentas de pago o bien para enseanza.

Clonando a Dolly

git clone [email protected]:JJ/OpenTea.git

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 direccin del repositorio y usar clone del men. Esa es tambin la estructura de las rdenes de git Git + comando + url + ramaHay, por otro lado, diferentes formas de clonar un repositorio. En este caso lo hace usando ssh por debajo, lo que te permite ms adelante subir los cambios sin necesidad de introducir la clave. Dependiendo del URL los privilegios sern diferentes. Por ejemplo, git:// ser un clon de slo lectura y https:// no te permitir ms adelante usar la clave pblica/privada para enviar info fcilmente. Esta lnea de rdenes se puede usar tanto en Linux como para un cliente que se crea en Windows de lnea de rdenes similar al bash de Linux.

Aadiendo nuevos ficheros

git add nuevofichero.txt

Comodines y toda la pesca. Puedes aadir directorios completos. Todo esto se puede hacer tambin desde el interfaz grfico con apunta y dale al botn, claro.

Sin compromisos

git commit -a -m Esto es un cambio

Un commit es un punto de cambio en el repositorio local, igual que todos los comandos anteriores. En ningn caso hemos subido nada a github todava. Slo establecemos un punto de control para volver en caso necesario.

Y t de quin eres?

Generar pareja de claves y subirla

https://help.github.com/articles/generating-ssh-keys

Se puede usar la autentificacin 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.

Empujando a los cambios

Git push origin master

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 orgenes. Si ests trabajando con GitHub y quieres, por ejemplo, subir las cosas a Gitorious no tienes ms que hacer Git remote add origin [URL]http://caiustheory.com/adding-a-remote-to-existing-git-repo

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

Para ms info y comentarios, https://help.github.com/articles/create-a-repo

En vez de https puede que sea ms conveniente usar alguna de las otras URLs. En todo caso, la que te d el repositorio.Generalmente, por cierto, es ms cmodo hacerlo de otra forma, pero esta es la forma tambin de tener un repo local sin necesidad de subirlo a ningn sitio.

Mientras puede haber habido algn cambio

git pull origin master

Git pull es git fetch + git merge http://stackoverflow.com/questions/292357/whats-the-difference-between-git-pull-and-git-fetch

Hay un conflicto!

Aparece en el texto y se corrige + commit + push

Los conflictos se producen en los ficheros binarios o cuando dos usuarios han modificado el mismo grupo de lneas. Se puede producir tanto en el pull como en el push, siempre que haya habido una divergencia.Se puede liar todava ms parda, pero lo dejamos para ms adelante.

Hay que ponerse a trabajar

Los issues de GitHub estn integrados con el git

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 recibirn notificaciones (creo)

Hitos y asuntos

Los issues o tickets se organizan en hitos (milestones)

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 gestin ms avanzados (como redmine) no se organizan de forma jerrquica, con lo que la cosa est (relativamente) limitada.

git commit -m references o fixes o closes #xxx

No se cierra hasta que no se acaba

Esos commits aparecen en la pgina 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.

Hay muchas ms cosas

Fetch

Merge

Rebase

checkout

Creando un fork

Y, adems, aadiendo repositorios upstream (y fusionando con el original)

https://help.github.com/articles/fork-a-repo

Integracin continua

Github est integrado con Travis y permite hacer integracin continua

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 integracin continua (en tu propio servidor o en la nube)

Eso es todo

Alguna pregunta?