Uso de git (Cursos de e-ghost 2011)

Iñaki Arenaza
Iñaki ArenazaLecturer/Researcher at Mondragon Unibertsitatea
Iñaki Arenaza [email_address] @iarenaza (Creative Commons Attribution Non-commercial Share Alike 3.0 Spain License) Introducción al uso de
Sistemas de Control de Versiones Centralizados (CVCS) Ejemplos: CVS, Subversion, Perforce, SourceSafe, ... Fuente: http://progit.org/book/ch1-1.html (CC-BY-NC-SA 3.0)
Sistemas de Control de Versiones Distribuidos (DVCS) Ejemplos: git, Mercurial, Bazaar, BitKeeper,... Fuente: http://progit.org/book/ch1-1.html (CC-BY-NC-SA 3.0)
Diferencias versus instantáneas git, Mercurial* Bazaar, Mercurial* Fuente: http://progit.org/book/ch1-3.html (CC-BY-NC-SA 3.0) Fuente: http://progit.org/book/ch1-3.html (CC-BY-NC-SA 3.0)
(Algunas) características de git ,[object Object]
Git tiene integridad fuerte (sha1)
Git (generalmente) sólo añade datos
Los tres espacios y tres estados Fuente: http://progit.org/book/ch1-3.html (CC-BY-NC-SA 3.0) Modified* Staged Committed
Los tres espacios ,[object Object]
El directorio de trabajo es una copia de trabajo de una versión del proyecto.
El área de preparación (staging area) es un archivo que almacena información sobre lo que irá en el próximo commit. Antes se le llamaba “el índice”.
Los tres estados ,[object Object]
Modificado (modified): se ha modificado el archivo pero todavía no se ha confirmado.
Preparado (staged): se ha marcado para confirmación un archivo modificado en su versión actual.
Los “tres + 1” estados Fuente: http://progit.org/book/ch2-2.html  (CC-BY-NC-SA 3.0) El estado 3+1
Terminología de git ,[object Object]
objeto: unidad de almacenamiento en git.  ,[object Object]
Por tanto, un objeto es inmutable.
Tipos de objetos de git ,[object Object]
tree: lista de nombres y permisos, junto con las referencias de objetos blob o tree asociados. “Un directorio”.
Tipos de objetos de git ,[object Object]
la persona que ha realizado el commit de la revisión,
el autor de la revisión,
la fecha de la misma,
un mensaje asociado,
el objeto tree que corresponde al directorio raíz de la revisión.
Tipos de objetos de git ,[object Object]
un nombre simbólico (el de la propia tag)
puede contener un mensaje asociado.
opcionalmente puede incluir una firma (PGP). En este último caso se denomina un "objeto de etiqueta firmada".
Terminología de git (cont.) ,[object Object]
base de datos de objetos: almacena un conjunto de objetos ( habitualmente en $GIT_DIR/objects/ ).
ref o referencia: cadena de 40 bytes con la representación hexadecimal de un SHA1, o un nombre simbólico ( que se almacena en $GIT_DIR/refs/ ) que denota un objeto particular.
Terminología de git (cont.) ,[object Object]
padre: un objeto commit contiene una lista (potencialmente vacía) de objetos commit que representan a sus predecesores lógicos en la línea de desarrollo, esto es, sus ancestros.
Tipos de objetos de git Fuente: http://progit.org/book/ch3-1.html  (CC-BY-NC-SA 3.0)
Tipos de objetos de git Fuente: http://progit.org/book/ch3-1.html  (CC-BY-NC-SA 3.0)
Terminología de git (cont.) ,[object Object]
Puede contenier una copia de trabajo de una revisión. ,[object Object],[object Object]
Terminología de git (cont.) ,[object Object]
índice: una colección de ficheros con información de stat(2), cuyos contenidos están almacenados como objetos. ,[object Object]
Terminología de git (cont.) ,[object Object]
La copia de trabajo está siempre asociada a una rama (la rama "actual" o "checked out") y la cabeza especial “HEAD” apunta a esa rama. ,[object Object],[object Object]
Terminología de git (cont.) ,[object Object]
Terminología de git (cont.) Fuente: http://progit.org/book/ch3-1.html  (CC-BY-NC-SA 3.0) Estado “inicial” master sigue siendo la rama activa en la copia de trabajo $ git branch testing $ git checkout testing testing pasa a ser la rama activa en la copia de trabajo 1 2 3 4
Terminología de git (cont.) $ git add some-file(s) $ git commit -m ... $ git checkout master $ git add some-file(s) $ git commit -m ... Fuente: http://progit.org/book/ch3-1.html  (CC-BY-NC-SA 3.0) 1 2 3
Terminología de git (cont.) ,[object Object]
La fusión puede crear un nuevo objeto commit si una de las ramas no es un ancestro de la otra.
Si una es ancestro de la otra, simplemente se mueve la referencia de la cabeza de la rama fusionada ( fast-forward merge ).
merge: escenario 1 Fuente: http://progit.org/book/ch3-2.html  (CC-BY-NC-SA 3.0) $ git checkout master $ git merge hotfix $ git branch hotfix master $ git checkout hotfix $ git add …. $ git commit  1 2 3
merge: escenario 2 Fuente: http://progit.org/book/ch3-2.html  (CC-BY-NC-SA 3.0) $ git merge iss53 $ git checkout -b iss53 master $ git add …. $ git commit $ git checkout master $ git add …. $ git commit 1 2 3
Operaciones en el área de trabajo ,[object Object],[object Object],[object Object],[object Object],[object Object],$ git branch mdl21-nested-groups mdl21-ldap-refactor $ git checkout mdl21-nested-groups $ git branch $ git status $ git add fichero1 fichero2 ... $ git rm fichero3 fichero4 ...
Operaciones en el área de trabajo ,[object Object],[object Object],[object Object]
Usar gitk para visualizar el historial de una rama:
Usar gitk para visualizar el historial de todas las ramas: $ git diff $ git diff HEAD $ git diff MOODLE_21_STABLE $ git diff MOODLE_21_STABLE..mdl21-ldap-refactor $ git commit $ gitk mdl21-nested-group $ gitk --all
Terminología de git (cont.) ,[object Object],Fuente: http://progit.org/book/ch3-5.html  (CC-BY-NC-SA 3.0) * las cabezas de las ramas remotas son inamovibles**
Terminología de git (cont.) ,[object Object],Fuente: http://progit.org/book/ch3-5.html  (CC-BY-NC-SA 3.0) 1 2
1 of 57

Recommended

Mini-tutorial de git by
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de gitAntonio Ognio
11.7K views23 slides
WorkShop: Introducción a GIT by
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
2.3K views50 slides
Introducción a git by
Introducción a gitIntroducción a git
Introducción a gitKeopx
1.7K views45 slides
Introducción al uso Git y GitHub para trabajo colaborativo by
Introducción al uso Git y GitHub para trabajo colaborativoIntroducción al uso Git y GitHub para trabajo colaborativo
Introducción al uso Git y GitHub para trabajo colaborativoJuan J. Merelo
4.7K views24 slides
Git para-principiantes by
Git para-principiantesGit para-principiantes
Git para-principiantesnscoder_mad
2.4K views36 slides
Git / Guía Básica by
Git / Guía BásicaGit / Guía Básica
Git / Guía BásicaJuan Victor Minaya León
2.2K views24 slides

More Related Content

What's hot

Git: un enfoque práctico by
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque prácticoPatxi Gortázar
3.4K views55 slides
Git with Scrum en español by
Git with Scrum en españolGit with Scrum en español
Git with Scrum en españolRamón Glez
4.2K views41 slides
Introducción a git y git hub by
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hubMiguel Ascanio Gómez
995 views51 slides
Git: control de versiones by
Git: control de versionesGit: control de versiones
Git: control de versionesMoisés Pérez Delgado
3.8K views33 slides
Fundamentos de GIt y Github by
Fundamentos de GIt y GithubFundamentos de GIt y Github
Fundamentos de GIt y GithubJavier Latorre López-Villalta
1.3K views44 slides
Control de versiones con Git y Github by
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Githubguest638090
7.6K views67 slides

What's hot(20)

Git with Scrum en español by Ramón Glez
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
Ramón Glez4.2K views
Control de versiones con Git y Github by guest638090
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
guest6380907.6K views
Git: Aprovecha las ventajas del control de versiones distribuido by Iñaki Arenaza
Git: Aprovecha las ventajas del control de versiones distribuidoGit: Aprovecha las ventajas del control de versiones distribuido
Git: Aprovecha las ventajas del control de versiones distribuido
Iñaki Arenaza2.3K views
Curso: Publicando mi proyecto web en Github by Carlos Huamaní
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
Carlos Huamaní1K views
Introducción a Git by Sergio Rus
Introducción a GitIntroducción a Git
Introducción a Git
Sergio Rus2.7K views
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones by Paradigma Digital
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicacionesGit y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Git y Jenkins. El futuro en la gestión del ciclo de vida de aplicaciones
Paradigma Digital9.2K views
Git + Github - Betabeers Córdoba XII by quaip
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
quaip1K views
Control de versiones con GIT by Julio Silva
Control de versiones con GITControl de versiones con GIT
Control de versiones con GIT
Julio Silva578 views
PPT Git GitHub by drsevilla
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
drsevilla2.9K views
El git nuestro de cada dia by Alan Descoins
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
Alan Descoins1.2K views
Herramientas de trabajo para entorno LAMP by Keopx
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
Keopx 2.3K views
Versionando proyectos con Git, desarrollo de software colaborativo by Hernán Aguilera
Versionando proyectos con Git, desarrollo de software colaborativoVersionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativo
Hernán Aguilera733 views
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? by emateucr
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente? LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
emateucr3.8K views
05 intro-git-github-heroku-v4 by fyomaira
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4
fyomaira456 views

Viewers also liked

Tunea tu wordpress by
Tunea tu wordpressTunea tu wordpress
Tunea tu wordpressIñaki Arenaza
4.1K views108 slides
Forjas y repositorios de código en la nube. Euskal Encounter 2015 by
Forjas y repositorios de código en la nube. Euskal Encounter 2015Forjas y repositorios de código en la nube. Euskal Encounter 2015
Forjas y repositorios de código en la nube. Euskal Encounter 2015Iñaki Arenaza
937 views51 slides
Mahara y Moodle - EDUSOL 2011 by
Mahara y Moodle - EDUSOL 2011Mahara y Moodle - EDUSOL 2011
Mahara y Moodle - EDUSOL 2011Iñaki Arenaza
1.6K views32 slides
10 Claves para mejorar la seguridad de tu WP by
10 Claves para mejorar la seguridad de tu WP10 Claves para mejorar la seguridad de tu WP
10 Claves para mejorar la seguridad de tu WPIñaki Arenaza
676 views14 slides
Las claves para optimizar la seguridad de tu sitio WordPress by
Las claves para optimizar la seguridad de tu sitio WordPressLas claves para optimizar la seguridad de tu sitio WordPress
Las claves para optimizar la seguridad de tu sitio WordPressIñaki Arenaza
621 views46 slides
Mahoodle (English) by
Mahoodle (English)Mahoodle (English)
Mahoodle (English)Iñaki Arenaza
2.2K views73 slides

Viewers also liked(9)

Forjas y repositorios de código en la nube. Euskal Encounter 2015 by Iñaki Arenaza
Forjas y repositorios de código en la nube. Euskal Encounter 2015Forjas y repositorios de código en la nube. Euskal Encounter 2015
Forjas y repositorios de código en la nube. Euskal Encounter 2015
Iñaki Arenaza937 views
Mahara y Moodle - EDUSOL 2011 by Iñaki Arenaza
Mahara y Moodle - EDUSOL 2011Mahara y Moodle - EDUSOL 2011
Mahara y Moodle - EDUSOL 2011
Iñaki Arenaza1.6K views
10 Claves para mejorar la seguridad de tu WP by Iñaki Arenaza
10 Claves para mejorar la seguridad de tu WP10 Claves para mejorar la seguridad de tu WP
10 Claves para mejorar la seguridad de tu WP
Iñaki Arenaza676 views
Las claves para optimizar la seguridad de tu sitio WordPress by Iñaki Arenaza
Las claves para optimizar la seguridad de tu sitio WordPressLas claves para optimizar la seguridad de tu sitio WordPress
Las claves para optimizar la seguridad de tu sitio WordPress
Iñaki Arenaza621 views
Lo nuevo de Moodle 2.0 (MoodleMoot Colombia 2010) by Iñaki Arenaza
Lo nuevo de Moodle 2.0 (MoodleMoot Colombia 2010)Lo nuevo de Moodle 2.0 (MoodleMoot Colombia 2010)
Lo nuevo de Moodle 2.0 (MoodleMoot Colombia 2010)
Iñaki Arenaza1.3K views
Integración de Mahara con Moodle (MoodleMoot España 2010) by Iñaki Arenaza
Integración de Mahara con Moodle (MoodleMoot España 2010)Integración de Mahara con Moodle (MoodleMoot España 2010)
Integración de Mahara con Moodle (MoodleMoot España 2010)
Iñaki Arenaza8.4K views
Monta WordPress en tu empresa by Iñaki Arenaza
Monta WordPress en tu empresaMonta WordPress en tu empresa
Monta WordPress en tu empresa
Iñaki Arenaza2.4K views

Similar to Uso de git (Cursos de e-ghost 2011)

Git & GitHub Part II by
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part IIMax Rodriguez
41 views28 slides
Manual para usuarios de Git @patxiredes.pdf by
Manual para usuarios de Git @patxiredes.pdfManual para usuarios de Git @patxiredes.pdf
Manual para usuarios de Git @patxiredes.pdfCarlosJurado61
5 views40 slides
Taller Git en la URJC by
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC sidelab
1.3K views113 slides
The Gift of Git [Español: La Palabra de Git] by
The Gift of Git [Español: La Palabra de Git]The Gift of Git [Español: La Palabra de Git]
The Gift of Git [Español: La Palabra de Git]Alfonso Felipe Cabargas Madrid
733 views26 slides
Cheat-Sheet Git Commands by
Cheat-Sheet Git CommandsCheat-Sheet Git Commands
Cheat-Sheet Git CommandsCristian Omar Jaramillo Méndez
825 views2 slides
Uso de git para el mantenimiento de parches locales o públicos by
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicosIñaki Arenaza
608 views32 slides

Similar to Uso de git (Cursos de e-ghost 2011)(20)

Manual para usuarios de Git @patxiredes.pdf by CarlosJurado61
Manual para usuarios de Git @patxiredes.pdfManual para usuarios de Git @patxiredes.pdf
Manual para usuarios de Git @patxiredes.pdf
CarlosJurado615 views
Taller Git en la URJC by sidelab
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
sidelab1.3K views
Uso de git para el mantenimiento de parches locales o públicos by Iñaki Arenaza
Uso de git para el mantenimiento  de parches locales o públicosUso de git para el mantenimiento  de parches locales o públicos
Uso de git para el mantenimiento de parches locales o públicos
Iñaki Arenaza608 views
Mejora tu productividad con git by ch1l3no
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
ch1l3no148 views
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco by Antonio Luque Bravo
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora BlancoPresentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
Git para no gitters by Rojomorgan
Git para no gittersGit para no gitters
Git para no gitters
Rojomorgan563 views
Git + Github - Sysmana 2014 by quaip
Git + Github - Sysmana 2014Git + Github - Sysmana 2014
Git + Github - Sysmana 2014
quaip1.2K views

More from Iñaki Arenaza

Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools by
Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevToolsMejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools
Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevToolsIñaki Arenaza
5.7K views92 slides
Mahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusano by
Mahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusanoMahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusano
Mahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusanoIñaki Arenaza
1K views17 slides
Forjas de Software: qué son y para que sirven by
Forjas de Software: qué son y para que sirvenForjas de Software: qué son y para que sirven
Forjas de Software: qué son y para que sirvenIñaki Arenaza
719 views45 slides
Internacionalización con WordPress (WordPress Euskadi 2014) by
Internacionalización con WordPress (WordPress Euskadi 2014)Internacionalización con WordPress (WordPress Euskadi 2014)
Internacionalización con WordPress (WordPress Euskadi 2014)Iñaki Arenaza
1.2K views14 slides
Móntate un sitio web completo con WordPress en 4 horas by
Móntate un sitio web completo con WordPress en 4 horasMóntate un sitio web completo con WordPress en 4 horas
Móntate un sitio web completo con WordPress en 4 horasIñaki Arenaza
6K views119 slides
Buddypress: Social Networking, in a Box by
Buddypress: Social Networking, in a BoxBuddypress: Social Networking, in a Box
Buddypress: Social Networking, in a BoxIñaki Arenaza
2.4K views178 slides

More from Iñaki Arenaza(10)

Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools by Iñaki Arenaza
Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevToolsMejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools
Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools
Iñaki Arenaza5.7K views
Mahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusano by Iñaki Arenaza
Mahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusanoMahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusano
Mahara, el bosón de Higgs, los horizontes de sucesos y los agujeros de gusano
Iñaki Arenaza1K views
Forjas de Software: qué son y para que sirven by Iñaki Arenaza
Forjas de Software: qué son y para que sirvenForjas de Software: qué son y para que sirven
Forjas de Software: qué son y para que sirven
Iñaki Arenaza719 views
Internacionalización con WordPress (WordPress Euskadi 2014) by Iñaki Arenaza
Internacionalización con WordPress (WordPress Euskadi 2014)Internacionalización con WordPress (WordPress Euskadi 2014)
Internacionalización con WordPress (WordPress Euskadi 2014)
Iñaki Arenaza1.2K views
Móntate un sitio web completo con WordPress en 4 horas by Iñaki Arenaza
Móntate un sitio web completo con WordPress en 4 horasMóntate un sitio web completo con WordPress en 4 horas
Móntate un sitio web completo con WordPress en 4 horas
Iñaki Arenaza6K views
Buddypress: Social Networking, in a Box by Iñaki Arenaza
Buddypress: Social Networking, in a BoxBuddypress: Social Networking, in a Box
Buddypress: Social Networking, in a Box
Iñaki Arenaza2.4K views
Moodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open source by Iñaki Arenaza
Moodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open sourceMoodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open source
Moodle: Un ejemplo del modelo de desarrollo y gestión de proyectos open source
Iñaki Arenaza3.8K views
Sesión formativa sobre web 2.0 MGEP-MU (5 y 6 Mayo 2008) by Iñaki Arenaza
Sesión formativa sobre web 2.0 MGEP-MU (5 y 6 Mayo 2008)Sesión formativa sobre web 2.0 MGEP-MU (5 y 6 Mayo 2008)
Sesión formativa sobre web 2.0 MGEP-MU (5 y 6 Mayo 2008)
Iñaki Arenaza1.8K views

Recently uploaded

PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf by
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdfPROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdfSaMu554
10 views2 slides
Estrategia de apoyo de tecnologia 3er periodo de tecnologia.pdf by
Estrategia de apoyo de tecnologia 3er periodo de tecnologia.pdfEstrategia de apoyo de tecnologia 3er periodo de tecnologia.pdf
Estrategia de apoyo de tecnologia 3er periodo de tecnologia.pdfSofiaArceCaicedo
9 views12 slides
Fundamentos de electricidad y electrónica -1.pdf by
Fundamentos de electricidad y electrónica -1.pdfFundamentos de electricidad y electrónica -1.pdf
Fundamentos de electricidad y electrónica -1.pdfSofiCneo1
11 views7 slides
PyGoat Analizando la seguridad en aplicaciones Django.pdf by
PyGoat Analizando la seguridad en aplicaciones Django.pdfPyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdfJose Manuel Ortega Candel
5 views46 slides
Facilitar la gestión, visibilidad y reutilización de los datos de investigaci... by
Facilitar la gestión, visibilidad y reutilización de los datos de investigaci...Facilitar la gestión, visibilidad y reutilización de los datos de investigaci...
Facilitar la gestión, visibilidad y reutilización de los datos de investigaci...CSUC - Consorci de Serveis Universitaris de Catalunya
61 views26 slides
PRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdf by
PRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdfPRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdf
PRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdfNatalySnchez25
9 views10 slides

Recently uploaded(20)

PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf by SaMu554
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdfPROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
SaMu55410 views
Estrategia de apoyo de tecnologia 3er periodo de tecnologia.pdf by SofiaArceCaicedo
Estrategia de apoyo de tecnologia 3er periodo de tecnologia.pdfEstrategia de apoyo de tecnologia 3er periodo de tecnologia.pdf
Estrategia de apoyo de tecnologia 3er periodo de tecnologia.pdf
Fundamentos de electricidad y electrónica -1.pdf by SofiCneo1
Fundamentos de electricidad y electrónica -1.pdfFundamentos de electricidad y electrónica -1.pdf
Fundamentos de electricidad y electrónica -1.pdf
SofiCneo111 views
PRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdf by NatalySnchez25
PRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdfPRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdf
PRESENTACIÓN - SISTEMAS INFORMÁTICOS.pdf
NatalySnchez259 views
Tarea-Teclados ergonómico y pantallas táctiles.pptx by xiomarakerly200325
Tarea-Teclados ergonómico y pantallas táctiles.pptxTarea-Teclados ergonómico y pantallas táctiles.pptx
Tarea-Teclados ergonómico y pantallas táctiles.pptx
tecnologaeinformtica-231124115719-3a836080.pdf by MaraJos722801
tecnologaeinformtica-231124115719-3a836080.pdftecnologaeinformtica-231124115719-3a836080.pdf
tecnologaeinformtica-231124115719-3a836080.pdf
MaraJos72280110 views
Recusos Multimedia y Wed 2.0.pptx by henryruidiaz
Recusos Multimedia  y Wed 2.0.pptxRecusos Multimedia  y Wed 2.0.pptx
Recusos Multimedia y Wed 2.0.pptx
henryruidiaz5 views
fundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdf by 8m6zpwytgs
fundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdffundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdf
fundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdf
8m6zpwytgs8 views
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real... by codertectura
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
codertectura56 views
Tema 3. Fuentes de Energía no renovables.ppt by AlmuPe
Tema 3. Fuentes de Energía no renovables.pptTema 3. Fuentes de Energía no renovables.ppt
Tema 3. Fuentes de Energía no renovables.ppt
AlmuPe185 views
Tarea Práctica web de la sesión 14.pptx by illanlir
Tarea Práctica web de la sesión 14.pptxTarea Práctica web de la sesión 14.pptx
Tarea Práctica web de la sesión 14.pptx
illanlir7 views

Uso de git (Cursos de e-ghost 2011)

  • 1. Iñaki Arenaza [email_address] @iarenaza (Creative Commons Attribution Non-commercial Share Alike 3.0 Spain License) Introducción al uso de
  • 2. Sistemas de Control de Versiones Centralizados (CVCS) Ejemplos: CVS, Subversion, Perforce, SourceSafe, ... Fuente: http://progit.org/book/ch1-1.html (CC-BY-NC-SA 3.0)
  • 3. Sistemas de Control de Versiones Distribuidos (DVCS) Ejemplos: git, Mercurial, Bazaar, BitKeeper,... Fuente: http://progit.org/book/ch1-1.html (CC-BY-NC-SA 3.0)
  • 4. Diferencias versus instantáneas git, Mercurial* Bazaar, Mercurial* Fuente: http://progit.org/book/ch1-3.html (CC-BY-NC-SA 3.0) Fuente: http://progit.org/book/ch1-3.html (CC-BY-NC-SA 3.0)
  • 5.
  • 6. Git tiene integridad fuerte (sha1)
  • 8. Los tres espacios y tres estados Fuente: http://progit.org/book/ch1-3.html (CC-BY-NC-SA 3.0) Modified* Staged Committed
  • 9.
  • 10. El directorio de trabajo es una copia de trabajo de una versión del proyecto.
  • 11. El área de preparación (staging area) es un archivo que almacena información sobre lo que irá en el próximo commit. Antes se le llamaba “el índice”.
  • 12.
  • 13. Modificado (modified): se ha modificado el archivo pero todavía no se ha confirmado.
  • 14. Preparado (staged): se ha marcado para confirmación un archivo modificado en su versión actual.
  • 15. Los “tres + 1” estados Fuente: http://progit.org/book/ch2-2.html (CC-BY-NC-SA 3.0) El estado 3+1
  • 16.
  • 17.
  • 18. Por tanto, un objeto es inmutable.
  • 19.
  • 20. tree: lista de nombres y permisos, junto con las referencias de objetos blob o tree asociados. “Un directorio”.
  • 21.
  • 22. la persona que ha realizado el commit de la revisión,
  • 23. el autor de la revisión,
  • 24. la fecha de la misma,
  • 26. el objeto tree que corresponde al directorio raíz de la revisión.
  • 27.
  • 28. un nombre simbólico (el de la propia tag)
  • 29. puede contener un mensaje asociado.
  • 30. opcionalmente puede incluir una firma (PGP). En este último caso se denomina un "objeto de etiqueta firmada".
  • 31.
  • 32. base de datos de objetos: almacena un conjunto de objetos ( habitualmente en $GIT_DIR/objects/ ).
  • 33. ref o referencia: cadena de 40 bytes con la representación hexadecimal de un SHA1, o un nombre simbólico ( que se almacena en $GIT_DIR/refs/ ) que denota un objeto particular.
  • 34.
  • 35. padre: un objeto commit contiene una lista (potencialmente vacía) de objetos commit que representan a sus predecesores lógicos en la línea de desarrollo, esto es, sus ancestros.
  • 36. Tipos de objetos de git Fuente: http://progit.org/book/ch3-1.html (CC-BY-NC-SA 3.0)
  • 37. Tipos de objetos de git Fuente: http://progit.org/book/ch3-1.html (CC-BY-NC-SA 3.0)
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. Terminología de git (cont.) Fuente: http://progit.org/book/ch3-1.html (CC-BY-NC-SA 3.0) Estado “inicial” master sigue siendo la rama activa en la copia de trabajo $ git branch testing $ git checkout testing testing pasa a ser la rama activa en la copia de trabajo 1 2 3 4
  • 46. Terminología de git (cont.) $ git add some-file(s) $ git commit -m ... $ git checkout master $ git add some-file(s) $ git commit -m ... Fuente: http://progit.org/book/ch3-1.html (CC-BY-NC-SA 3.0) 1 2 3
  • 47.
  • 48. La fusión puede crear un nuevo objeto commit si una de las ramas no es un ancestro de la otra.
  • 49. Si una es ancestro de la otra, simplemente se mueve la referencia de la cabeza de la rama fusionada ( fast-forward merge ).
  • 50. merge: escenario 1 Fuente: http://progit.org/book/ch3-2.html (CC-BY-NC-SA 3.0) $ git checkout master $ git merge hotfix $ git branch hotfix master $ git checkout hotfix $ git add …. $ git commit 1 2 3
  • 51. merge: escenario 2 Fuente: http://progit.org/book/ch3-2.html (CC-BY-NC-SA 3.0) $ git merge iss53 $ git checkout -b iss53 master $ git add …. $ git commit $ git checkout master $ git add …. $ git commit 1 2 3
  • 52.
  • 53.
  • 54. Usar gitk para visualizar el historial de una rama:
  • 55. Usar gitk para visualizar el historial de todas las ramas: $ git diff $ git diff HEAD $ git diff MOODLE_21_STABLE $ git diff MOODLE_21_STABLE..mdl21-ldap-refactor $ git commit $ gitk mdl21-nested-group $ gitk --all
  • 56.
  • 57.
  • 58.
  • 59.
  • 60. Si la cabeza de la rama remota no es un ancestro de la cabeza de la rama local, el push falla*.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65. Puede ser problemático en ramas publicadas en repositorios remotos.
  • 66. rebase: “limpieza” del historial Estado “inicial” merge tradicional de “master” y “experiment” rebase de “experiment” sobre “master” merge de “master” y “experiment” tras el rebase 1 2 3 4
  • 67. Limpieza del historial IMPORTANTE: No hace rebase de los cambios de una rama si ésta ha sido publicada en otro repositorio.
  • 68.
  • 69. Si hay conflictos, solucionar a mano, y decirle a git qué hemos arreglado:
  • 70. Podemos abortar en todo momento: $ git checkout wip-mdl21-enrol-db-refactor $ git rebase MOODLE_21_STABLE $ editar enrol/database/config.html $ git add enrol/database/config.html enrol/database/enrol.php $ editar xxxx $ git add xxxxx $ git rebase --continue $ git rebase --abort
  • 71.
  • 72. Creación de series de parches: $ git checkout mdl21-enrol-db-refactor $ git diff MOODLE_21_STABLE > mdl21-enrol-db-refactor.diff $ git checkout mdl21-enrol-database-refactor $ git format-patch -o serie-enrol-db MOODLE_21_STABLE $ git format-patch -o -s -10 mdl21-enrol-db
  • 73. Ejemplo de modelo de trabajo Para mantener modificaciones locales de Moodle en Mondragon Unibertsitatea
  • 74. Premisas del modelo de trabajo Repositorio 'compartido' de referencia
  • 75. Premisas del modelo de trabajo Aprovechar el repositorio de git.moodle.org No usar 'git clone' para la importación desde git.moodle.org
  • 76. Premisas del modelo de trabajo Repositorio compartido sólo con ramas locales
  • 77. Premisas del modelo de trabajo Desarrollo siempre en las ramas locales
  • 78. Premisas del modelo de trabajo Ramas estándar sólo en repositorios de los desarrolladores
  • 79. git.moodle.org repositorio compartido @mondragon.edu copia de trabajo + repositorio desarrollador git-remote + git-push git-fetch git-push git-pull git-fetch git-push git-pull git-remote + git-fetch git-fetch / git-pull git-clone git-clone git-remote + git-fetch git-fetch / git-pull git-fetch git-push git-pull
  • 80. Creación repositorio compartido $ git config --global user.name 'Desarrollador-1' $ git config --global user.email 'desa-1@mondragon.edu' $ cd /ruta/repositorio/desarrollador $ mkdir desarrollador-1.git $ cd desarrollador-1.git $ git init Crear repositorio primer desarrollador
  • 81. Creación repositorio compartido Importar repositorio de moodle.org $ git remote add -t master -t MOODLE_21_STABLE -m master moodle-org git://git.moodle.org/moodle.git $ git fetch moodle-org
  • 82. Creación repositorio compartido Ramas locales de seguimiento (opcional) $ git branch --track master moodle-org/master $ git branch --track MOODLE_21_STABLE moodle-org/MOODLE_21_STABLE
  • 83. Creación repositorio compartido Crear ramas locales de trabajo $ git branch mdl21-ldap-refactor moodle-org/MOODLE_21_STABLE
  • 84. Creación repositorio compartido Crear repositorio compartido $ cd /ruta/repositorio/compartido $ mkdir compartido.git $ cd compartido.git $ git --bare init --shared=all $ chmod g=rwxs,o=rx . $ sudo chgrp -R git-moodle .
  • 85. Creación repositorio compartido Enviar rama local al repositorio compartido $ cd /ruta/repositorio/desarrollador/desarrollador-1.git $ git remote add compartido /ruta/repositorio/compartido/compartido.git $ git push compartido mdl21-ldap-refactor
  • 86. Creación repositorio compartido Configurar rama local para hacer pull desde repositorio compartido $ git config branch.mdl21-ldap-refactor.remote compartido $ git config branch.mdl21-ldap-refactor.merge refs/heads/mdl21-ldap-refactor
  • 87. Creación repo nuevo desarrollador Clonar repositorio compartido $ git config --global user.name 'Desarrollador-2' $ git config --global user.email 'desa-2@mondragon.edu' $ cd /ruta/repositorio/desarrollador $ git clone -o compartido /ruta/repositorio/compartido/compartido.git desarrollador-2.git
  • 88. Creación repo nuevo desarrollador Importar ramas estándar (opcional) $ cd desarollador-2.git $ git remote add -t master -t MOODLE_21_STABLE -m master moodle-org git://git.moodle.org/moodle.git $ git fetch moodle-org
  • 89. Creación repo nuevo desarrollador Crear ramas locales de trabajo $ git branch mdl21-ldap-refactor compartido/mdl21-ldap-refactor $ git checkout mdl21-ldap-refactor
  • 90.
  • 92. git stash [save | list | show | apply | remove | clear]
  • 95. git gc, git prune, git fsck
  • 97.
  • 98.
  • 99.