Introducción al uso Git y GitHub para trabajo colaborativo
-
Upload
juan-j-merelo -
Category
Technology
-
view
3.753 -
download
5
Transcript of Introducción al uso Git y GitHub para trabajo colaborativo
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?