GitFu
Differences between revisions 3 and 4
|
Size: 460
Comment:
|
← Revision 4 as of 2009-11-03 05:09:13 ⇥
Size: 23097
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 11: | Line 11: |
{{{#!IRC 19:03 <@igorgue> Ok, hola gente, yo me llamo Igor Guerrero, soy miembro de Ubunt-ni 19:03 <@igorgue> esta session se sale un poco del tema (lo explico dento de un rato) 19:03 <@igorgue> pero es muy importante, porque creo que de las tecnologias actuales, Git es posiblemente una de las mas importantes 19:04 <@igorgue> esta charla, va ser un poco mas interactiva que las anteriores 19:04 <@igorgue> asi que me gustaria que me fueran siguiendo, porque podre algunos comandos 19:05 <@igorgue> basicamente si siguen las instrucciones entenderan un poco mas de lo que es git 19:05 <@igorgue> y para que sirve 19:05 <@igorgue> ok 19:05 <@igorgue> la agenda es la siguiente: 19:06 <@igorgue> 1. Intro 19:06 <@igorgue> 2. Sistema de control de versiones 19:06 <@igorgue> 2.1 Por que es importante 19:06 <@igorgue> 3. Instalar y configurar 19:06 <@igorgue> 4. Demo 19:08 <@igorgue> Intro 19:08 <@igorgue> Git es un sistema de control de versiones distribuido desarrollador inicialmente por Linus Torvals (el mismito) 19:08 <@igorgue> , pero ahora es mantenido por Junio Hamano desde 2005, Git ha tomado mucha fama en los ultimos 3 anios, porque muchos proyectos estan migrado a git 19:08 <@igorgue> basicamente, git 19:08 <@igorgue> se ha convertido en el sistema de control de versiones distribuido mas usado actualemnte 19:09 <@igorgue> esto se debe a muchos factores 19:09 <@igorgue> 1. es rapido 19:09 <@igorgue> 2. es un proyecto activo 19:09 <@igorgue> 3. maduro (o confiable) 19:09 <@igorgue> entre otras cosas... 19:10 <@igorgue> KDE, GNOME, Ruby On Rails, JQuery y por supuesto el kernel de Linux, todos usan git como sistema de control de versiones... 19:10 <@igorgue> pero... 19:10 <@igorgue> Que es un sistema de control de versiones? 19:11 <@igorgue> es increible la cantidad de desarrolladores de software, que en su vida han usado un sistema de control de versiones 19:12 <@igorgue> * me avisan que KDE no se ha pasado a Git (que estan esperando?) es Qt la plataforma de KDE la que esta en Git 19:12 <@igorgue> y tiene mucho que ver... 19:12 <@igorgue> con la educacion que recivimos como ingenieros de software 19:13 <@igorgue> entonces, mucha gente llega a el campo laboral, sin saber que es un sistema de control de versiones o un depurador 19:13 <@igorgue> IDE... 19:13 <@igorgue> Interprete... 19:13 <@igorgue> puedo continuar :) 19:13 <@igorgue> es muy importante saberlo si... 19:13 <@igorgue> OK 19:13 <@igorgue> pero que es? 19:13 <@igorgue> Un sistema de control de versiones es el manejo de los cambios en documentos, archivos, programas, contenidos en una computadora 19:14 <@igorgue> y... 19:14 <@igorgue> por que es importante? 19:14 <@igorgue> una palabra! 19:14 <@igorgue> Colaboracion 19:14 <@igorgue> para tener colaboracion en un equipo, es necesario tener un sistema de control de verisiones 19:14 <@igorgue> al menos en el codigo 19:15 <@igorgue> aunque actualemente 19:15 <@igorgue> el uso de sistemas de control de (*) va mas alla 19:16 <@igorgue> he escuchado de disenadores usando Git 19:16 <@igorgue> es muy importante 19:16 <@igorgue> poder regresar a una version anterior que funcionaba, sin perder tus cambios actuales 19:16 <@igorgue> y eso es el valor del sistema de control de version 19:17 <@igorgue> y es por lo cual en casi todos los proyectos de software libre se usa un sistema de control de version 19:17 <@igorgue> pero... 19:17 <@igorgue> Git es diferente a los demas (o al menos a algunos) 19:17 <@igorgue> Git es un sistema de control de versiones distribuido 19:17 <@igorgue> Por que distribuido? 19:18 -!- davidemc [n=dmena@190.99.45.200] has left #ubuntu-centroamerica [] 19:18 <@igorgue> Distribucion (en el aspecto de 1 o mas personas usan un sistema como si fuese uno solo) es uno de los problemas mas complicados de resolver para los programadores, git no solo resuelve el problema de seguir cambios en el contenido de codigo tambien el de distribucion 19:18 <@igorgue> lo que significa, que cada desarrollador 19:20 <@igorgue> que obtiene una copia de un codigo que usa Git, es capaz de hacer cualquier tipo de operaciones 19:20 <@igorgue> sobre ese codigo 19:20 <@igorgue> ok, espero que este claro 19:20 <@igorgue> que es un sistema de control de version y git 19:20 <@igorgue> Git no esta solo 19:21 <@igorgue> tambien esta Bazzar, Mercurial (y otros mas que no recuerdo ahorita) 19:21 <@igorgue> todos distribuidos 19:21 <@igorgue> Ubuntu usa Bazzar 19:21 <@igorgue> Mozilla 19:21 <@igorgue> usa Mercurial 19:21 <@igorgue> Linux (el kernel) usa Git 19:22 <@igorgue> todos proyectos inmensos y no he escuchado muchas quejas que diagamos 19:23 <@igorgue> ok, creo que explique muchos de los conceptos de Git (que en realidad se aplican a casi todos los sistemas de control de versiones distribuidos) 19:24 <@igorgue> me gustaria pasar a preguntas, antes de ir a demo (donde lo vamos a instalar, y jugar un rato con git) 19:24 <@igorgue> n0rman: ? 19:24 <@alucardni> igorgue, ya te paso las preguntas 19:24 <@alucardni> <n0rman> PREGUNTA: En tu opinion personal, GIT es superior a otros Sistemas de Control de Versiones? Por que? 19:25 <@igorgue> no creo que Git sea superior 19:25 <@igorgue> solo es muy bueno, en mi opinion 19:25 <@igorgue> y famoso 19:25 <@igorgue> Git es posiblemente (con miedo a equibocarme) el mas rapido de todos 19:26 <@igorgue> pero de ahi, no te sabria decir cual es mejor 19:26 <@igorgue> yo he usado Bazzar y Mercurial tambien 19:26 <@igorgue> y aunque escritos en Python (Git en C), son muy rapidos 19:26 <@igorgue> entonces, no se, la verdad es que mientras el sistema que uses sea distribuido estas bien en mi opinion 19:27 <@igorgue> [fin] :) 19:27 <@alucardni> <tcpip4000> PREGUNTA: en que ha utilizado git? 19:27 <@igorgue> en todos mis proyectos de software 19:27 <@igorgue> en mi empresa (que no ha salido a luz todavia) 19:27 <@igorgue> hay un website 19:27 <@igorgue> bien famoso, llamado github, es genial para colaborar con git 19:28 <@igorgue> una vez hice modificaciones a un editor de texto, muy facil y la gente ve tus cambios, bastante orientada a codigo en lugar de al proyecto 19:29 <@alucardni> <Tonny> <PREGUNTA> Que tal buen soporte tiene para archivos binarios, es decir no texto 19:29 <@igorgue> tambien esta gitorious, que es genial :) y tengo un proyecto ahi, y lo genial de gitorious 19:29 <@igorgue> esque es software libre 19:29 <@igorgue> y puedes instalarlo 19:30 <@igorgue> Binarios estan soportados 19:30 <@igorgue> y puedes hacer binary diffs en Git tambien 19:30 <@igorgue> de esa manera lo usan los disenadores web 19:30 <@igorgue> alucardni: mas preguntas? 19:30 <@alucardni> <libertcharrua> PREGUNTA: tiene utilidad en el usuario común? 19:31 <@igorgue> el directorio /etc 19:31 <@igorgue> o archivos de configuracion de Linux 19:32 <@igorgue> los podrias usar bajo git 19:32 <@igorgue> para asi no perder configuraciones viejas 19:32 <@igorgue> es algo avanzado 19:32 <@igorgue> no mucho para el usuario comun 19:32 <@igorgue> pero no tenes que saber programacion para usar Git 19:32 <@igorgue> alucardni: next! 19:32 <@alucardni> <kuadrosx> <Pregunta> que recursos para aprender sobre git recomiendas ? 19:33 <@igorgue> http://git-scm.com/ <= es el sitio oficial de git 19:33 <@igorgue> hay un libro de git tambien gratis 19:33 <@igorgue> lamentablemente casi todo en ingles 19:33 <@igorgue> http://progit.org/ 19:34 <@igorgue> ese es el libro 19:34 <@igorgue> es gratis leer en linea 19:34 <@igorgue> http://gitcasts.com/ <= en video tambien 19:35 <@igorgue> yo tambinen soy un recurso :) 19:35 <@igorgue> #ubuntu-ni si tienen preguntas luego 19:36 <@igorgue> ok 19:36 <@igorgue> si no hay mas preguntas 19:36 <@igorgue> pasamos al demo 19:36 <@igorgue> que sera algo bien siemple 19:37 <@igorgue> s/siemple/simple/g 19:37 <@igorgue> Instalar y configurar: 19:37 <@igorgue> $ sudo apt-get install git-core 19:37 <@igorgue> ^^ eso instalara git, vale la pena buscar mas paquetes 19:38 <@igorgue> en synaptic 19:38 <@igorgue> porque eso es bien basico, pero funciona para casi todo :) 19:38 <@igorgue> ok, lo primero que van a hacer cuando instalan git 19:39 <@igorgue> es decirle quien sos 19:39 <@igorgue> $ [editor] ~/.gitconfig 19:39 <@igorgue> creara un nuevo archivo 19:40 <@igorgue> en el cual agregan 19:40 <@igorgue> http://gist.github.com/224669 19:40 <@igorgue> algo parecido a eso 19:40 <@igorgue> tambien 19:41 <@igorgue> pueden hacerlo via la linea de comandos 19:41 <@igorgue> $ git config --global user.name "Igor Guerrero" 19:41 <@igorgue> por ejemplo 19:41 <@igorgue> el siguiente paso... 19:42 <@igorgue> es crear un nuevo "repositorio" o "proyecto" 19:42 <@igorgue> $ mkdir ubuntuopenweekgit 19:42 <@igorgue> $ cd ubuntuopenweekgit 19:42 <@igorgue> $ git init 19:43 <@igorgue> Initialized empty Git repository in /home/igor/ubuntuopenweekgit/.git/ 19:43 <@igorgue> esa sera la salida del comando ^^ 19:44 <@igorgue> despues 19:44 <@igorgue> $ git status 19:44 <@igorgue> # On branch master 19:44 <@igorgue> # 19:44 <@igorgue> # Initial commit 19:44 <@igorgue> # 19:44 <@igorgue> nothing to commit (create/copy files and use "git add" to track) 19:44 <@igorgue> como ven, no hay nada, entonces 19:44 <@igorgue> git te dice, cual es o puede ser el siguiente paso 19:44 <@igorgue> ok, agregemos un archivo 19:44 <@igorgue> pero antes 19:44 <@igorgue> el comando mas importante de git! 19:45 <@igorgue> $ git status 19:45 <@igorgue> :) 19:45 <@igorgue> eso te dice entre otras cosas, que es lo que tenes en tu repo ahorita 19:45 <@igorgue> desde archivos si seguir, archivos a borrar, en cual rama (branch) del codigo estas 19:45 <@igorgue> etc etc 19:45 <@igorgue> la salida 19:45 <@igorgue> seria 19:45 <@igorgue> $ git status 19:45 <@igorgue> # On branch master 19:45 <@igorgue> # 19:45 <@igorgue> # Initial commit 19:45 <@igorgue> # 19:45 <@igorgue> nothing to commit (create/copy files and use "git add" to track) 19:45 <@igorgue> ahorita que no hay nada.... 19:46 <@igorgue> ok 19:46 <@igorgue> ahora 19:46 <@igorgue> creemos un nuevo achivo 19:47 <@igorgue> [editor] README 19:47 <@igorgue> [editor] es donde pondran su editor 19:47 <@igorgue> podria ser gedit 19:47 <@igorgue> kate 19:47 <@igorgue> o vim ;) 19:47 <@igorgue> lo crean y lo guardan 19:47 <@igorgue> cuando dan ahora 19:47 <@igorgue> $ git status 19:47 <@igorgue> # On branch master 19:47 <@igorgue> # 19:47 <@igorgue> # Initial commit 19:47 <@igorgue> # 19:47 <@igorgue> # Untracked files: 19:47 <@igorgue> # (use "git add <file>..." to include in what will be committed) 19:47 <@igorgue> # 19:48 <@igorgue> #IREADME 19:48 <@igorgue> nothing added to commit but untracked files present (use "git add" to track) 19:48 <@igorgue> como ven 19:48 <@igorgue> git te dice 19:48 <@igorgue> que hay un archivo 19:48 <@igorgue> que hay que agregar 19:48 <@igorgue> o que no esta siendo seguido 19:48 <@igorgue> mi traduccion de "tracked" 19:49 <@igorgue> ok 19:49 <@igorgue> agregemos ese archivo 19:49 <@igorgue> con 19:49 <@igorgue> $ git add README 19:50 <@igorgue> ahora... adivinen? 19:50 <@igorgue> $ git status 19:50 <@igorgue> # On branch master 19:50 <@igorgue> # 19:50 <@igorgue> # Initial commit 19:50 <@igorgue> # 19:50 <@igorgue> # Changes to be committed: 19:50 <@igorgue> # (use "git rm --cached <file>..." to unstage) 19:50 <@igorgue> # 19:50 <@igorgue> #Inew file: README 19:50 <@igorgue> # 19:50 <@igorgue> git status :) 19:50 <@igorgue> ahora si 19:50 <@igorgue> dice que hay un archivo nuevo 19:51 <@igorgue> y tambien te dice como quitarlo 19:51 <@igorgue> quitarlo del stage 19:51 <@igorgue> que basicamente es una etapa intermedia 19:51 <@igorgue> en donde pones los archivos 19:51 <@igorgue> antes de ponerlos en el repositorio 19:51 <@igorgue> (el directorio ubuntuopenweekgit) 19:52 <@igorgue> $ git commit -m "primer cambio" 19:52 <@igorgue> [master (root-commit) 8ba8614] primer cambio 19:52 <@igorgue> 1 files changed, 1 insertions(+), 0 deletions(-) 19:52 <@igorgue> create mode 100644 README 19:52 <@igorgue> ya con eso 19:52 <@igorgue> mandamos el primer cambio.... 19:52 <@igorgue> digamos que queremos cambiar el archivo ahora... 19:53 <@igorgue> agregemos mas contenido a el README 19:53 <@igorgue> creo que no mencione que agrege este contenido inicialmente al README 19:53 <@igorgue> $ cat README 19:53 <@igorgue> hola ubuntu open week 19:54 <@igorgue> ok, ahora agregemos mas contenido 19:54 <@igorgue> $ cat README 19:54 <@igorgue> hola ubuntu open week 19:54 <@igorgue> Aprendiendo Git! 19:54 <@igorgue> guardamos... 19:54 <@igorgue> y hacemos un git status 19:55 <@igorgue> $ git status 19:55 <@igorgue> # On branch master 19:55 <@igorgue> # Changed but not updated: 19:55 <@igorgue> # (use "git add <file>..." to update what will be committed) 19:55 <@igorgue> # (use "git checkout -- <file>..." to discard changes in working directory) 19:55 <@igorgue> # 19:55 <@igorgue> #Imodified: README 19:55 <@igorgue> # 19:55 <@igorgue> no changes added to commit (use "git add" and/or "git commit -a") 19:55 <@igorgue> ok 19:55 <@igorgue> agegemoslo 19:55 <@igorgue> agregemoslo 19:56 <@igorgue> primero... 19:56 <@igorgue> lo mejor es hacer git diff 19:56 <@igorgue> $ git diff 19:56 <@igorgue> diff --git a/README b/README 19:56 <@igorgue> index 43997d1..6127fe9 100644 19:56 <@igorgue> --- a/README 19:56 <@igorgue> +++ b/README 19:56 <@igorgue> @@ -1 +1,2 @@ 19:56 <@igorgue> hola ubuntu open week 19:56 <@igorgue> +Aprendiendo Git! 19:56 <@igorgue> ahi hay info valiosa 19:57 <@igorgue> como ven 19:57 <@igorgue> se dice que se agrego una nueva linea 19:57 <@igorgue> +Aprendiendo Git! 19:57 <@igorgue> lo cual es genial, eso es bueno tambien 19:58 <@igorgue> antes de poner un cambio en el repositorio 19:58 <@igorgue> es importante saber que estamos cambiando 19:58 <@igorgue> ok 19:58 <@igorgue> ahora 19:58 <@igorgue> $ git add README 19:58 <@igorgue> $ git commit -m "agregado git" 19:58 <@igorgue> [master bbef878] agregado git 19:58 <@igorgue> 1 files changed, 1 insertions(+), 0 deletions(-) 19:59 <@igorgue> $ git log 19:59 <@igorgue> commit bbef8780d691c4f703cb7a23c512c8b010d6c7bd 19:59 <@igorgue> Author: Igor Guerrero Fonseca <igfgt1@gmail.com> 19:59 <@igorgue> Date: Mon Nov 2 20:58:46 2009 -0500 19:59 <@igorgue> agregado git 19:59 <@igorgue> commit 8ba8614b16cadeb4056d912f3fd9d63484e52075 19:59 <@igorgue> Author: Igor Guerrero Fonseca <igfgt1@gmail.com> 19:59 <@igorgue> Date: Mon Nov 2 20:51:57 2009 -0500 19:59 <@igorgue> primer cambio 19:59 <@igorgue> aqui esta el comando "git log" 19:59 <@igorgue> el cual muestra todo lo que hemos hecho 19:59 <@igorgue> el log :-) 20:00 <@igorgue> lo ultimo que vamos a ver 20:00 <@igorgue> es branching 20:00 <@igorgue> o la creacion de nuevas ramas 20:00 <@igorgue> de codigo 20:00 <@igorgue> es muy importante 20:00 <@igorgue> y la manera en que git lo hace 20:00 <@igorgue> es revolucionaria y es por lo cual muchos (me incluyo) se mueven a git 20:01 <@igorgue> desde Subversion (que es creo que lider) 20:02 <@igorgue> es git branch 20:02 <@igorgue> el comando 20:02 <@igorgue> $ git branch nuevoreadme 20:03 <@igorgue> $ git branch 20:03 <@igorgue> * master 20:03 <@igorgue> nuevoreadme 20:03 <@igorgue> git branch 20:03 <@igorgue> solo 20:03 <@igorgue> dice en cual branch estamos 20:03 <@igorgue> como ven 20:03 <@igorgue> es el "* master" 20:03 <@igorgue> que es en realidad opcional 20:04 <@igorgue> pero la mayoria de proyectos lo usan como la rama de desarrollo 20:04 <@igorgue> ok 20:04 <@igorgue> hagamos un checkout 20:04 <@igorgue> de la nueva rama 20:04 <@igorgue> $ git checkout nuevoreadme 20:04 <@igorgue> Switched to branch 'nuevoreadme' 20:04 <@igorgue> $ git branch 20:04 <@igorgue> master 20:04 <@igorgue> * nuevoreadme 20:04 <@igorgue> ok 20:04 <@igorgue> estamos en este nuevo branch 20:04 <@igorgue> agegemos mas contenido al readme 20:05 <@igorgue> $ cat README 20:05 <@igorgue> hola ubuntu open week 20:05 <@igorgue> Aprendiendo Git! 20:05 <@igorgue> Git es genial! 20:05 <@igorgue> ese es la nueva linea que agege 20:05 <@igorgue> $ git diff 20:05 <@igorgue> diff --git a/README b/README 20:05 <@igorgue> index 6127fe9..45f428c 100644 20:05 <@igorgue> --- a/README 20:05 <@igorgue> +++ b/README 20:05 <@igorgue> @@ -1,2 +1,4 @@ 20:05 <@igorgue> hola ubuntu open week 20:05 <@igorgue> Aprendiendo Git! 20:05 <@igorgue> + 20:05 <@igorgue> +Git es genial! 20:05 <@igorgue> esa es la diferencia 20:06 <@igorgue> ahora agegemoslo y mandemos el cambio 20:06 <@igorgue> $ git add README 20:06 <@igorgue> $ git commit -m "git es genial porque es magia" 20:06 <@igorgue> [nuevoreadme 29f1423] git es genial porque es magia 20:06 <@igorgue> 1 files changed, 2 insertions(+), 0 deletions(-) 20:06 <@igorgue> $ git log 20:07 <@igorgue> les va a decir el nuevo cambio que mandamos 20:07 <@igorgue> ahora biene lo genial... 20:07 <@igorgue> checkout la rama "master" 20:07 <@igorgue> $ git checkout master 20:07 <@igorgue> Switched to branch 'master' 20:07 <@igorgue> $ cat README 20:07 <@igorgue> hola ubuntu open week 20:07 <@igorgue> Aprendiendo Git! 20:07 <@igorgue> como ven 20:08 <@igorgue> la linea que agegamos en el otro branch 20:08 <@igorgue> desaparecio! 20:08 <@igorgue> pero esta en el otro branch 20:08 <@igorgue> no en este 20:08 <@igorgue> eso es muy genial en git 20:08 <@igorgue> los branches 20:08 <@igorgue> o ramas 20:08 <@igorgue> son locales 20:08 <@igorgue> si queremos copiar los cambios del otro branch al master 20:08 <@igorgue> hacemos un merge 20:09 <@igorgue> $ git merge nuevoreadme 20:09 <@igorgue> Updating bbef878..29f1423 20:09 <@igorgue> Fast forward 20:09 <@igorgue> README | 2 ++ 20:09 <@igorgue> 1 files changed, 2 insertions(+), 0 deletions(-) 20:09 <@igorgue> y ya tenemos los cambios que hicimos en el otro lado 20:09 <@igorgue> bueno 20:09 <@igorgue> creo que eso es todo 20:09 <@igorgue> vimos que git 20:10 <@igorgue> 1. es local 20:10 <@igorgue> 2. maneja contenido no archivos 20:10 <@igorgue> 3. es facil de usar 20:10 <@igorgue> si quieren ver algo bueno 20:10 <@igorgue> pueden dar 20:10 <@igorgue> $ gitk 20:11 <@igorgue> ejemplo: http://dl.getdropbox.com/u/421955/ubuntuopenweekgit.png 20:12 <@igorgue> tambien hay otro UI que yo he estado usando 20:12 <@igorgue> llamado 20:12 <@igorgue> cola 20:12 <@igorgue> busquen en synaptic: git cola 20:13 <@alucardni> <n0rman> PREGUNTA: Y como para en que ocasiones son buena idea los branches? 20:13 <@igorgue> bueno 20:13 <@igorgue> yo uso branches todo el tiempo 20:13 <@igorgue> tengo que implementar algo 20:13 <@igorgue> uso un branch 20:13 <@igorgue> creo que tengo que mantener XYZ codigo 20:13 <@igorgue> hago un branch para mas tarde 20:14 <@igorgue> branches son buenos 20:14 <@igorgue> porque es un punto en tu proyecto al cual podes regresar 20:14 <@alucardni> Tonny> PREGUNTA: Alguna interfaz gráfica para ver las diferencias entre archivos 20:15 <@igorgue> podes usar meld 20:16 <@igorgue> http://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy 20:16 <@igorgue> algo viejo 20:16 <@n0rman> < Tonny> <PREGUNTA> Que tal buen soporte tiene para archivos binarios, es decir no texto 20:16 <@igorgue> pero siguen siendo los mismos pasos 20:16 <@alucardni> <Andphe> pregunta: no harán un ejemplo de branches remotos ? trabajo en equipo ? 20:17 <@igorgue> hay binary diffs 20:17 <@igorgue> y estan soportados 20:17 <@igorgue> los archivos binarios 20:17 <@igorgue> no 20:17 <@igorgue> no habra ejemplos de branches remotos... realmente tendria que explicar otras cosas, y tener un servidor o usar gitorious.org o github.com 20:18 <@igorgue> pero... 20:18 <@igorgue> sinceramente 20:18 <@igorgue> aqui estamos a un paso 20:18 <@igorgue> despues de los commit 20:18 <@igorgue> haces un 20:18 <@igorgue> $ git push remote_alias remote_branch 20:18 <@igorgue> $ git pull remote_alias/remote_branch # para obtener cambios 20:19 <@igorgue> git trabaja localmente, pero podes subir tus cambios a repositorios remotos, expuestos via SSH (que es la manera mas facil) 20:19 <@igorgue> entonces 20:19 <@igorgue> un git url es o podria ser 20:19 <@igorgue> git@server.com:directorio/proyecto.git 20:20 <@igorgue> eso responde la pregunta? 20:21 <@n0rman> < MadGab> PREGUNTA: para trabajar un proyecto en equipo existe algun servidor publico el cual nos permita almacenar nuestro codigo, para no trabajar de manera local con Git? 20:22 <@igorgue> Gitorious.org <= kuadrosx da soporte gratis y cuentas pro gratis tambien (es broma no hay cuentas pro creo ;)) 20:22 <@igorgue> tambien pueden usar github.com pero no es libre (pero permite proyectos no-libres) 20:23 <@n0rman> < jcalderon> PREGUNTA: Como puedo hacer funcionar git para mis archivos de configuración en un servidor ? 20:23 <@igorgue> vas al directorio donde tienes los archivos de conf 20:23 <@igorgue> le das 20:24 <@igorgue> $ git init 20:24 <@igorgue> $ git add [archivos] 20:24 <@igorgue> o si quieres tomar todos los archivos 20:24 <@igorgue> $ git add . 20:24 <@igorgue> $ git commit -m "commit inicial" 20:24 <@igorgue> y ya esta :) 20:24 <@igorgue> puedes copiar el archivo 20:24 <@igorgue> digo 20:24 <@igorgue> el directorio 20:24 <@igorgue> .git 20:25 <@igorgue> para moverlo donde quieras 20:25 <@igorgue> como dice kuadrosx tambien pueden usar el archivo .gitignore para evitar agregar archivos indeseados 20:25 <@igorgue> http://www.kernel.org/pub/software/scm/git/docs/gitignore.html 20:27 <@n0rman> < kikove> <PREGUNTA> Se me ocurre usarlo para la gestion de backups de MySQL, es posible esto 20:27 <@igorgue> de hecho esa idea esta genial 20:28 <@igorgue> si tus backups son SQL statements esta genial 20:28 <@igorgue> SQL statements == sentencias SQL 20:29 <@igorgue> otra pregunta? 20:30 <@n0rman> < n0rman> kuadrosx: das cuentas pro gratis, es cierto? :) 20:30 <@n0rman> :P 20:30 <@n0rman> esa es broma :) 20:30 <@n0rman> jejeje 20:30 <@igorgue> :) 20:30 <@n0rman> gracias igorgue :) 20:30 * n0rman *clap* *clap* 20:30 <@alucardni> ok, gracias igorgue 20:31 <@alucardni> muchas gracias a todos los asistentes 20:31 <@igorgue> de nada 20:31 <@igorgue> tengo hambra 20:31 <@igorgue> hamber 20:31 <@igorgue> hambre!!! 20:31 <@igorgue> :) 20:31 <@alucardni> y los esperamos mañana en a la misma hora y en el mismo canal XD }}} |
Control de Versiones con Git - Igor Guerrero
Hora: 19:00 UTC-6
Aprender algo de Git-fu, que tan importante es el control de version de codigo en estos dias?
Log de la Sesión
El log de la sesión lo puedes encontrar aquí.
1 19:03 <@igorgue> Ok, hola gente, yo me llamo Igor Guerrero, soy miembro de Ubunt-ni
2 19:03 <@igorgue> esta session se sale un poco del tema (lo explico dento de un rato)
3 19:03 <@igorgue> pero es muy importante, porque creo que de las tecnologias actuales, Git es posiblemente una de las mas importantes
4 19:04 <@igorgue> esta charla, va ser un poco mas interactiva que las anteriores
5 19:04 <@igorgue> asi que me gustaria que me fueran siguiendo, porque podre algunos comandos
6 19:05 <@igorgue> basicamente si siguen las instrucciones entenderan un poco mas de lo que es git
7 19:05 <@igorgue> y para que sirve
8 19:05 <@igorgue> ok
9 19:05 <@igorgue> la agenda es la siguiente:
10 19:06 <@igorgue> 1. Intro
11 19:06 <@igorgue> 2. Sistema de control de versiones
12 19:06 <@igorgue> 2.1 Por que es importante
13 19:06 <@igorgue> 3. Instalar y configurar
14 19:06 <@igorgue> 4. Demo
15 19:08 <@igorgue> Intro
16 19:08 <@igorgue> Git es un sistema de control de versiones distribuido desarrollador inicialmente por Linus Torvals (el mismito)
17 19:08 <@igorgue> , pero ahora es mantenido por Junio Hamano desde 2005, Git ha tomado mucha fama en los ultimos 3 anios, porque muchos proyectos estan migrado a git
18 19:08 <@igorgue> basicamente, git
19 19:08 <@igorgue> se ha convertido en el sistema de control de versiones distribuido mas usado actualemnte
20 19:09 <@igorgue> esto se debe a muchos factores
21 19:09 <@igorgue> 1. es rapido
22 19:09 <@igorgue> 2. es un proyecto activo
23 19:09 <@igorgue> 3. maduro (o confiable)
24 19:09 <@igorgue> entre otras cosas...
25 19:10 <@igorgue> KDE, GNOME, Ruby On Rails, JQuery y por supuesto el kernel de Linux, todos usan git como sistema de control de versiones...
26 19:10 <@igorgue> pero...
27 19:10 <@igorgue> Que es un sistema de control de versiones?
28 19:11 <@igorgue> es increible la cantidad de desarrolladores de software, que en su vida han usado un sistema de control de versiones
29 19:12 <@igorgue> * me avisan que KDE no se ha pasado a Git (que estan esperando?) es Qt la plataforma de KDE la que esta en Git
30 19:12 <@igorgue> y tiene mucho que ver...
31 19:12 <@igorgue> con la educacion que recivimos como ingenieros de software
32 19:13 <@igorgue> entonces, mucha gente llega a el campo laboral, sin saber que es un sistema de control de versiones o un depurador
33 19:13 <@igorgue> IDE...
34 19:13 <@igorgue> Interprete...
35 19:13 <@igorgue> puedo continuar :)
36 19:13 <@igorgue> es muy importante saberlo si...
37 19:13 <@igorgue> OK
38 19:13 <@igorgue> pero que es?
39 19:13 <@igorgue> Un sistema de control de versiones es el manejo de los cambios en documentos, archivos, programas, contenidos en una computadora
40 19:14 <@igorgue> y...
41 19:14 <@igorgue> por que es importante?
42 19:14 <@igorgue> una palabra!
43 19:14 <@igorgue> Colaboracion
44 19:14 <@igorgue> para tener colaboracion en un equipo, es necesario tener un sistema de control de verisiones
45 19:14 <@igorgue> al menos en el codigo
46 19:15 <@igorgue> aunque actualemente
47 19:15 <@igorgue> el uso de sistemas de control de (*) va mas alla
48 19:16 <@igorgue> he escuchado de disenadores usando Git
49 19:16 <@igorgue> es muy importante
50 19:16 <@igorgue> poder regresar a una version anterior que funcionaba, sin perder tus cambios actuales
51 19:16 <@igorgue> y eso es el valor del sistema de control de version
52 19:17 <@igorgue> y es por lo cual en casi todos los proyectos de software libre se usa un sistema de control de version
53 19:17 <@igorgue> pero...
54 19:17 <@igorgue> Git es diferente a los demas (o al menos a algunos)
55 19:17 <@igorgue> Git es un sistema de control de versiones distribuido
56 19:17 <@igorgue> Por que distribuido?
57 19:18 -!- davidemc [n=dmena@190.99.45.200] has left #ubuntu-centroamerica []
58 19:18 <@igorgue> Distribucion (en el aspecto de 1 o mas personas usan un sistema como si fuese uno solo) es uno de los problemas mas complicados de resolver para los programadores, git no solo resuelve el problema de seguir cambios en el contenido de codigo tambien el de distribucion
59 19:18 <@igorgue> lo que significa, que cada desarrollador
60 19:20 <@igorgue> que obtiene una copia de un codigo que usa Git, es capaz de hacer cualquier tipo de operaciones
61 19:20 <@igorgue> sobre ese codigo
62 19:20 <@igorgue> ok, espero que este claro
63 19:20 <@igorgue> que es un sistema de control de version y git
64 19:20 <@igorgue> Git no esta solo
65 19:21 <@igorgue> tambien esta Bazzar, Mercurial (y otros mas que no recuerdo ahorita)
66 19:21 <@igorgue> todos distribuidos
67 19:21 <@igorgue> Ubuntu usa Bazzar
68 19:21 <@igorgue> Mozilla
69 19:21 <@igorgue> usa Mercurial
70 19:21 <@igorgue> Linux (el kernel) usa Git
71 19:22 <@igorgue> todos proyectos inmensos y no he escuchado muchas quejas que diagamos
72 19:23 <@igorgue> ok, creo que explique muchos de los conceptos de Git (que en realidad se aplican a casi todos los sistemas de control de versiones distribuidos)
73 19:24 <@igorgue> me gustaria pasar a preguntas, antes de ir a demo (donde lo vamos a instalar, y jugar un rato con git)
74 19:24 <@igorgue> n0rman: ?
75 19:24 <@alucardni> igorgue, ya te paso las preguntas
76 19:24 <@alucardni> <n0rman> PREGUNTA: En tu opinion personal, GIT es superior a otros Sistemas de Control de Versiones? Por que?
77 19:25 <@igorgue> no creo que Git sea superior
78 19:25 <@igorgue> solo es muy bueno, en mi opinion
79 19:25 <@igorgue> y famoso
80 19:25 <@igorgue> Git es posiblemente (con miedo a equibocarme) el mas rapido de todos
81 19:26 <@igorgue> pero de ahi, no te sabria decir cual es mejor
82 19:26 <@igorgue> yo he usado Bazzar y Mercurial tambien
83 19:26 <@igorgue> y aunque escritos en Python (Git en C), son muy rapidos
84 19:26 <@igorgue> entonces, no se, la verdad es que mientras el sistema que uses sea distribuido estas bien en mi opinion
85 19:27 <@igorgue> [fin] :)
86 19:27 <@alucardni> <tcpip4000> PREGUNTA: en que ha utilizado git?
87 19:27 <@igorgue> en todos mis proyectos de software
88 19:27 <@igorgue> en mi empresa (que no ha salido a luz todavia)
89 19:27 <@igorgue> hay un website
90 19:27 <@igorgue> bien famoso, llamado github, es genial para colaborar con git
91 19:28 <@igorgue> una vez hice modificaciones a un editor de texto, muy facil y la gente ve tus cambios, bastante orientada a codigo en lugar de al proyecto
92 19:29 <@alucardni> <Tonny> <PREGUNTA> Que tal buen soporte tiene para archivos binarios, es decir no texto
93 19:29 <@igorgue> tambien esta gitorious, que es genial :) y tengo un proyecto ahi, y lo genial de gitorious
94 19:29 <@igorgue> esque es software libre
95 19:29 <@igorgue> y puedes instalarlo
96 19:30 <@igorgue> Binarios estan soportados
97 19:30 <@igorgue> y puedes hacer binary diffs en Git tambien
98 19:30 <@igorgue> de esa manera lo usan los disenadores web
99 19:30 <@igorgue> alucardni: mas preguntas?
100 19:30 <@alucardni> <libertcharrua> PREGUNTA: tiene utilidad en el usuario común?
101 19:31 <@igorgue> el directorio /etc
102 19:31 <@igorgue> o archivos de configuracion de Linux
103 19:32 <@igorgue> los podrias usar bajo git
104 19:32 <@igorgue> para asi no perder configuraciones viejas
105 19:32 <@igorgue> es algo avanzado
106 19:32 <@igorgue> no mucho para el usuario comun
107 19:32 <@igorgue> pero no tenes que saber programacion para usar Git
108 19:32 <@igorgue> alucardni: next!
109 19:32 <@alucardni> <kuadrosx> <Pregunta> que recursos para aprender sobre git recomiendas ?
110 19:33 <@igorgue> http://git-scm.com/ <= es el sitio oficial de git
111 19:33 <@igorgue> hay un libro de git tambien gratis
112 19:33 <@igorgue> lamentablemente casi todo en ingles
113 19:33 <@igorgue> http://progit.org/
114 19:34 <@igorgue> ese es el libro
115 19:34 <@igorgue> es gratis leer en linea
116 19:34 <@igorgue> http://gitcasts.com/ <= en video tambien
117 19:35 <@igorgue> yo tambinen soy un recurso :)
118 19:35 <@igorgue> #ubuntu-ni si tienen preguntas luego
119 19:36 <@igorgue> ok
120 19:36 <@igorgue> si no hay mas preguntas
121 19:36 <@igorgue> pasamos al demo
122 19:36 <@igorgue> que sera algo bien siemple
123 19:37 <@igorgue> s/siemple/simple/g
124 19:37 <@igorgue> Instalar y configurar:
125 19:37 <@igorgue> $ sudo apt-get install git-core
126 19:37 <@igorgue> ^^ eso instalara git, vale la pena buscar mas paquetes
127 19:38 <@igorgue> en synaptic
128 19:38 <@igorgue> porque eso es bien basico, pero funciona para casi todo :)
129 19:38 <@igorgue> ok, lo primero que van a hacer cuando instalan git
130 19:39 <@igorgue> es decirle quien sos
131 19:39 <@igorgue> $ [editor] ~/.gitconfig
132 19:39 <@igorgue> creara un nuevo archivo
133 19:40 <@igorgue> en el cual agregan
134 19:40 <@igorgue> http://gist.github.com/224669
135 19:40 <@igorgue> algo parecido a eso
136 19:40 <@igorgue> tambien
137 19:41 <@igorgue> pueden hacerlo via la linea de comandos
138 19:41 <@igorgue> $ git config --global user.name "Igor Guerrero"
139 19:41 <@igorgue> por ejemplo
140 19:41 <@igorgue> el siguiente paso...
141 19:42 <@igorgue> es crear un nuevo "repositorio" o "proyecto"
142 19:42 <@igorgue> $ mkdir ubuntuopenweekgit
143 19:42 <@igorgue> $ cd ubuntuopenweekgit
144 19:42 <@igorgue> $ git init
145 19:43 <@igorgue> Initialized empty Git repository in /home/igor/ubuntuopenweekgit/.git/
146 19:43 <@igorgue> esa sera la salida del comando ^^
147 19:44 <@igorgue> despues
148 19:44 <@igorgue> $ git status
149 19:44 <@igorgue> # On branch master
150 19:44 <@igorgue> #
151 19:44 <@igorgue> # Initial commit
152 19:44 <@igorgue> #
153 19:44 <@igorgue> nothing to commit (create/copy files and use "git add" to track)
154 19:44 <@igorgue> como ven, no hay nada, entonces
155 19:44 <@igorgue> git te dice, cual es o puede ser el siguiente paso
156 19:44 <@igorgue> ok, agregemos un archivo
157 19:44 <@igorgue> pero antes
158 19:44 <@igorgue> el comando mas importante de git!
159 19:45 <@igorgue> $ git status
160 19:45 <@igorgue> :)
161 19:45 <@igorgue> eso te dice entre otras cosas, que es lo que tenes en tu repo ahorita
162 19:45 <@igorgue> desde archivos si seguir, archivos a borrar, en cual rama (branch) del codigo estas
163 19:45 <@igorgue> etc etc
164 19:45 <@igorgue> la salida
165 19:45 <@igorgue> seria
166 19:45 <@igorgue> $ git status
167 19:45 <@igorgue> # On branch master
168 19:45 <@igorgue> #
169 19:45 <@igorgue> # Initial commit
170 19:45 <@igorgue> #
171 19:45 <@igorgue> nothing to commit (create/copy files and use "git add" to track)
172 19:45 <@igorgue> ahorita que no hay nada....
173 19:46 <@igorgue> ok
174 19:46 <@igorgue> ahora
175 19:46 <@igorgue> creemos un nuevo achivo
176 19:47 <@igorgue> [editor] README
177 19:47 <@igorgue> [editor] es donde pondran su editor
178 19:47 <@igorgue> podria ser gedit
179 19:47 <@igorgue> kate
180 19:47 <@igorgue> o vim ;)
181 19:47 <@igorgue> lo crean y lo guardan
182 19:47 <@igorgue> cuando dan ahora
183 19:47 <@igorgue> $ git status
184 19:47 <@igorgue> # On branch master
185 19:47 <@igorgue> #
186 19:47 <@igorgue> # Initial commit
187 19:47 <@igorgue> #
188 19:47 <@igorgue> # Untracked files:
189 19:47 <@igorgue> # (use "git add <file>..." to include in what will be committed)
190 19:47 <@igorgue> #
191 19:48 <@igorgue> #IREADME
192 19:48 <@igorgue> nothing added to commit but untracked files present (use "git add" to track)
193 19:48 <@igorgue> como ven
194 19:48 <@igorgue> git te dice
195 19:48 <@igorgue> que hay un archivo
196 19:48 <@igorgue> que hay que agregar
197 19:48 <@igorgue> o que no esta siendo seguido
198 19:48 <@igorgue> mi traduccion de "tracked"
199 19:49 <@igorgue> ok
200 19:49 <@igorgue> agregemos ese archivo
201 19:49 <@igorgue> con
202 19:49 <@igorgue> $ git add README
203 19:50 <@igorgue> ahora... adivinen?
204 19:50 <@igorgue> $ git status
205 19:50 <@igorgue> # On branch master
206 19:50 <@igorgue> #
207 19:50 <@igorgue> # Initial commit
208 19:50 <@igorgue> #
209 19:50 <@igorgue> # Changes to be committed:
210 19:50 <@igorgue> # (use "git rm --cached <file>..." to unstage)
211 19:50 <@igorgue> #
212 19:50 <@igorgue> #Inew file: README
213 19:50 <@igorgue> #
214 19:50 <@igorgue> git status :)
215 19:50 <@igorgue> ahora si
216 19:50 <@igorgue> dice que hay un archivo nuevo
217 19:51 <@igorgue> y tambien te dice como quitarlo
218 19:51 <@igorgue> quitarlo del stage
219 19:51 <@igorgue> que basicamente es una etapa intermedia
220 19:51 <@igorgue> en donde pones los archivos
221 19:51 <@igorgue> antes de ponerlos en el repositorio
222 19:51 <@igorgue> (el directorio ubuntuopenweekgit)
223 19:52 <@igorgue> $ git commit -m "primer cambio"
224 19:52 <@igorgue> [master (root-commit) 8ba8614] primer cambio
225 19:52 <@igorgue> 1 files changed, 1 insertions(+), 0 deletions(-)
226 19:52 <@igorgue> create mode 100644 README
227 19:52 <@igorgue> ya con eso
228 19:52 <@igorgue> mandamos el primer cambio....
229 19:52 <@igorgue> digamos que queremos cambiar el archivo ahora...
230 19:53 <@igorgue> agregemos mas contenido a el README
231 19:53 <@igorgue> creo que no mencione que agrege este contenido inicialmente al README
232 19:53 <@igorgue> $ cat README
233 19:53 <@igorgue> hola ubuntu open week
234 19:54 <@igorgue> ok, ahora agregemos mas contenido
235 19:54 <@igorgue> $ cat README
236 19:54 <@igorgue> hola ubuntu open week
237 19:54 <@igorgue> Aprendiendo Git!
238 19:54 <@igorgue> guardamos...
239 19:54 <@igorgue> y hacemos un git status
240 19:55 <@igorgue> $ git status
241 19:55 <@igorgue> # On branch master
242 19:55 <@igorgue> # Changed but not updated:
243 19:55 <@igorgue> # (use "git add <file>..." to update what will be committed)
244 19:55 <@igorgue> # (use "git checkout -- <file>..." to discard changes in working directory)
245 19:55 <@igorgue> #
246 19:55 <@igorgue> #Imodified: README
247 19:55 <@igorgue> #
248 19:55 <@igorgue> no changes added to commit (use "git add" and/or "git commit -a")
249 19:55 <@igorgue> ok
250 19:55 <@igorgue> agegemoslo
251 19:55 <@igorgue> agregemoslo
252 19:56 <@igorgue> primero...
253 19:56 <@igorgue> lo mejor es hacer git diff
254 19:56 <@igorgue> $ git diff
255 19:56 <@igorgue> diff --git a/README b/README
256 19:56 <@igorgue> index 43997d1..6127fe9 100644
257 19:56 <@igorgue> --- a/README
258 19:56 <@igorgue> +++ b/README
259 19:56 <@igorgue> @@ -1 +1,2 @@
260 19:56 <@igorgue> hola ubuntu open week
261 19:56 <@igorgue> +Aprendiendo Git!
262 19:56 <@igorgue> ahi hay info valiosa
263 19:57 <@igorgue> como ven
264 19:57 <@igorgue> se dice que se agrego una nueva linea
265 19:57 <@igorgue> +Aprendiendo Git!
266 19:57 <@igorgue> lo cual es genial, eso es bueno tambien
267 19:58 <@igorgue> antes de poner un cambio en el repositorio
268 19:58 <@igorgue> es importante saber que estamos cambiando
269 19:58 <@igorgue> ok
270 19:58 <@igorgue> ahora
271 19:58 <@igorgue> $ git add README
272 19:58 <@igorgue> $ git commit -m "agregado git"
273 19:58 <@igorgue> [master bbef878] agregado git
274 19:58 <@igorgue> 1 files changed, 1 insertions(+), 0 deletions(-)
275 19:59 <@igorgue> $ git log
276 19:59 <@igorgue> commit bbef8780d691c4f703cb7a23c512c8b010d6c7bd
277 19:59 <@igorgue> Author: Igor Guerrero Fonseca <igfgt1@gmail.com>
278 19:59 <@igorgue> Date: Mon Nov 2 20:58:46 2009 -0500
279 19:59 <@igorgue> agregado git
280 19:59 <@igorgue> commit 8ba8614b16cadeb4056d912f3fd9d63484e52075
281 19:59 <@igorgue> Author: Igor Guerrero Fonseca <igfgt1@gmail.com>
282 19:59 <@igorgue> Date: Mon Nov 2 20:51:57 2009 -0500
283 19:59 <@igorgue> primer cambio
284 19:59 <@igorgue> aqui esta el comando "git log"
285 19:59 <@igorgue> el cual muestra todo lo que hemos hecho
286 19:59 <@igorgue> el log :-)
287 20:00 <@igorgue> lo ultimo que vamos a ver
288 20:00 <@igorgue> es branching
289 20:00 <@igorgue> o la creacion de nuevas ramas
290 20:00 <@igorgue> de codigo
291 20:00 <@igorgue> es muy importante
292 20:00 <@igorgue> y la manera en que git lo hace
293 20:00 <@igorgue> es revolucionaria y es por lo cual muchos (me incluyo) se mueven a git
294 20:01 <@igorgue> desde Subversion (que es creo que lider)
295 20:02 <@igorgue> es git branch
296 20:02 <@igorgue> el comando
297 20:02 <@igorgue> $ git branch nuevoreadme
298 20:03 <@igorgue> $ git branch
299 20:03 <@igorgue> * master
300 20:03 <@igorgue> nuevoreadme
301 20:03 <@igorgue> git branch
302 20:03 <@igorgue> solo
303 20:03 <@igorgue> dice en cual branch estamos
304 20:03 <@igorgue> como ven
305 20:03 <@igorgue> es el "* master"
306 20:03 <@igorgue> que es en realidad opcional
307 20:04 <@igorgue> pero la mayoria de proyectos lo usan como la rama de desarrollo
308 20:04 <@igorgue> ok
309 20:04 <@igorgue> hagamos un checkout
310 20:04 <@igorgue> de la nueva rama
311 20:04 <@igorgue> $ git checkout nuevoreadme
312 20:04 <@igorgue> Switched to branch 'nuevoreadme'
313 20:04 <@igorgue> $ git branch
314 20:04 <@igorgue> master
315 20:04 <@igorgue> * nuevoreadme
316 20:04 <@igorgue> ok
317 20:04 <@igorgue> estamos en este nuevo branch
318 20:04 <@igorgue> agegemos mas contenido al readme
319 20:05 <@igorgue> $ cat README
320 20:05 <@igorgue> hola ubuntu open week
321 20:05 <@igorgue> Aprendiendo Git!
322 20:05 <@igorgue> Git es genial!
323 20:05 <@igorgue> ese es la nueva linea que agege
324 20:05 <@igorgue> $ git diff
325 20:05 <@igorgue> diff --git a/README b/README
326 20:05 <@igorgue> index 6127fe9..45f428c 100644
327 20:05 <@igorgue> --- a/README
328 20:05 <@igorgue> +++ b/README
329 20:05 <@igorgue> @@ -1,2 +1,4 @@
330 20:05 <@igorgue> hola ubuntu open week
331 20:05 <@igorgue> Aprendiendo Git!
332 20:05 <@igorgue> +
333 20:05 <@igorgue> +Git es genial!
334 20:05 <@igorgue> esa es la diferencia
335 20:06 <@igorgue> ahora agegemoslo y mandemos el cambio
336 20:06 <@igorgue> $ git add README
337 20:06 <@igorgue> $ git commit -m "git es genial porque es magia"
338 20:06 <@igorgue> [nuevoreadme 29f1423] git es genial porque es magia
339 20:06 <@igorgue> 1 files changed, 2 insertions(+), 0 deletions(-)
340 20:06 <@igorgue> $ git log
341 20:07 <@igorgue> les va a decir el nuevo cambio que mandamos
342 20:07 <@igorgue> ahora biene lo genial...
343 20:07 <@igorgue> checkout la rama "master"
344 20:07 <@igorgue> $ git checkout master
345 20:07 <@igorgue> Switched to branch 'master'
346 20:07 <@igorgue> $ cat README
347 20:07 <@igorgue> hola ubuntu open week
348 20:07 <@igorgue> Aprendiendo Git!
349 20:07 <@igorgue> como ven
350 20:08 <@igorgue> la linea que agegamos en el otro branch
351 20:08 <@igorgue> desaparecio!
352 20:08 <@igorgue> pero esta en el otro branch
353 20:08 <@igorgue> no en este
354 20:08 <@igorgue> eso es muy genial en git
355 20:08 <@igorgue> los branches
356 20:08 <@igorgue> o ramas
357 20:08 <@igorgue> son locales
358 20:08 <@igorgue> si queremos copiar los cambios del otro branch al master
359 20:08 <@igorgue> hacemos un merge
360 20:09 <@igorgue> $ git merge nuevoreadme
361 20:09 <@igorgue> Updating bbef878..29f1423
362 20:09 <@igorgue> Fast forward
363 20:09 <@igorgue> README | 2 ++
364 20:09 <@igorgue> 1 files changed, 2 insertions(+), 0 deletions(-)
365 20:09 <@igorgue> y ya tenemos los cambios que hicimos en el otro lado
366 20:09 <@igorgue> bueno
367 20:09 <@igorgue> creo que eso es todo
368 20:09 <@igorgue> vimos que git
369 20:10 <@igorgue> 1. es local
370 20:10 <@igorgue> 2. maneja contenido no archivos
371 20:10 <@igorgue> 3. es facil de usar
372 20:10 <@igorgue> si quieren ver algo bueno
373 20:10 <@igorgue> pueden dar
374 20:10 <@igorgue> $ gitk
375 20:11 <@igorgue> ejemplo: http://dl.getdropbox.com/u/421955/ubuntuopenweekgit.png
376 20:12 <@igorgue> tambien hay otro UI que yo he estado usando
377 20:12 <@igorgue> llamado
378 20:12 <@igorgue> cola
379 20:12 <@igorgue> busquen en synaptic: git cola
380 20:13 <@alucardni> <n0rman> PREGUNTA: Y como para en que ocasiones son buena idea los branches?
381 20:13 <@igorgue> bueno
382 20:13 <@igorgue> yo uso branches todo el tiempo
383 20:13 <@igorgue> tengo que implementar algo
384 20:13 <@igorgue> uso un branch
385 20:13 <@igorgue> creo que tengo que mantener XYZ codigo
386 20:13 <@igorgue> hago un branch para mas tarde
387 20:14 <@igorgue> branches son buenos
388 20:14 <@igorgue> porque es un punto en tu proyecto al cual podes regresar
389 20:14 <@alucardni> Tonny> PREGUNTA: Alguna interfaz gráfica para ver las diferencias entre archivos
390 20:15 <@igorgue> podes usar meld
391 20:16 <@igorgue> http://nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy
392 20:16 <@igorgue> algo viejo
393 20:16 <@n0rman> < Tonny> <PREGUNTA> Que tal buen soporte tiene para archivos binarios, es decir no texto
394 20:16 <@igorgue> pero siguen siendo los mismos pasos
395 20:16 <@alucardni> <Andphe> pregunta: no harán un ejemplo de branches remotos ? trabajo en equipo ?
396 20:17 <@igorgue> hay binary diffs
397 20:17 <@igorgue> y estan soportados
398 20:17 <@igorgue> los archivos binarios
399 20:17 <@igorgue> no
400 20:17 <@igorgue> no habra ejemplos de branches remotos... realmente tendria que explicar otras cosas, y tener un servidor o usar gitorious.org o github.com
401 20:18 <@igorgue> pero...
402 20:18 <@igorgue> sinceramente
403 20:18 <@igorgue> aqui estamos a un paso
404 20:18 <@igorgue> despues de los commit
405 20:18 <@igorgue> haces un
406 20:18 <@igorgue> $ git push remote_alias remote_branch
407 20:18 <@igorgue> $ git pull remote_alias/remote_branch # para obtener cambios
408 20:19 <@igorgue> git trabaja localmente, pero podes subir tus cambios a repositorios remotos, expuestos via SSH (que es la manera mas facil)
409 20:19 <@igorgue> entonces
410 20:19 <@igorgue> un git url es o podria ser
411 20:19 <@igorgue> git@server.com:directorio/proyecto.git
412 20:20 <@igorgue> eso responde la pregunta?
413 20:21 <@n0rman> < MadGab> PREGUNTA: para trabajar un proyecto en equipo existe algun servidor publico el cual nos permita almacenar nuestro codigo, para no trabajar de manera local con Git?
414 20:22 <@igorgue> Gitorious.org <= kuadrosx da soporte gratis y cuentas pro gratis tambien (es broma no hay cuentas pro creo ;))
415 20:22 <@igorgue> tambien pueden usar github.com pero no es libre (pero permite proyectos no-libres)
416 20:23 <@n0rman> < jcalderon> PREGUNTA: Como puedo hacer funcionar git para mis archivos de configuración en un servidor ?
417 20:23 <@igorgue> vas al directorio donde tienes los archivos de conf
418 20:23 <@igorgue> le das
419 20:24 <@igorgue> $ git init
420 20:24 <@igorgue> $ git add [archivos]
421 20:24 <@igorgue> o si quieres tomar todos los archivos
422 20:24 <@igorgue> $ git add .
423 20:24 <@igorgue> $ git commit -m "commit inicial"
424 20:24 <@igorgue> y ya esta :)
425 20:24 <@igorgue> puedes copiar el archivo
426 20:24 <@igorgue> digo
427 20:24 <@igorgue> el directorio
428 20:24 <@igorgue> .git
429 20:25 <@igorgue> para moverlo donde quieras
430 20:25 <@igorgue> como dice kuadrosx tambien pueden usar el archivo .gitignore para evitar agregar archivos indeseados
431 20:25 <@igorgue> http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
432 20:27 <@n0rman> < kikove> <PREGUNTA> Se me ocurre usarlo para la gestion de backups de MySQL, es posible esto
433 20:27 <@igorgue> de hecho esa idea esta genial
434 20:28 <@igorgue> si tus backups son SQL statements esta genial
435 20:28 <@igorgue> SQL statements == sentencias SQL
436 20:29 <@igorgue> otra pregunta?
437 20:30 <@n0rman> < n0rman> kuadrosx: das cuentas pro gratis, es cierto? :)
438 20:30 <@n0rman> :P
439 20:30 <@n0rman> esa es broma :)
440 20:30 <@n0rman> jejeje
441 20:30 <@igorgue> :)
442 20:30 <@n0rman> gracias igorgue :)
443 20:30 * n0rman *clap* *clap*
444 20:30 <@alucardni> ok, gracias igorgue
445 20:31 <@alucardni> muchas gracias a todos los asistentes
446 20:31 <@igorgue> de nada
447 20:31 <@igorgue> tengo hambra
448 20:31 <@igorgue> hamber
449 20:31 <@igorgue> hambre!!!
450 20:31 <@igorgue> :)
451 20:31 <@alucardni> y los esperamos mañana en a la misma hora y en el mismo canal XD
UbuntuOpenWeek_ES/GitFu (last edited 2009-11-03 05:09:13 by 101-49-212-190)