SlideShare una empresa de Scribd logo
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

Más contenido relacionado

La actualidad más candente

Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
Patxi Gortázar
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
Ramón Glez
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
Miguel Ascanio Gómez
 
Fundamentos de GIt y Github
Fundamentos de GIt y GithubFundamentos de GIt y Github
Fundamentos de GIt y Github
Javier Latorre López-Villalta
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
guest638090
 
Git: Aprovecha las ventajas del control de versiones distribuido
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 distribuidoIñaki Arenaza
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
Carlos Huamaní
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
Sergio Rus
 
Git 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 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 Digital
 
Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
quaip
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
Daniel Salas Denegri
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
Jose Emilio Labra Gayo
 
Control de versiones con GIT
Control de versiones con GITControl de versiones con GIT
Control de versiones con GIT
Julio Silva
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHubdrsevilla
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
Alan Descoins
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
Keopx
 
Versionando proyectos con Git, desarrollo de software colaborativo
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 Aguilera
 
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?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
emateucr
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4fyomaira
 

La actualidad más candente (20)

Git: un enfoque práctico
Git: un enfoque prácticoGit: un enfoque práctico
Git: un enfoque práctico
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Fundamentos de GIt y Github
Fundamentos de GIt y GithubFundamentos de GIt y Github
Fundamentos de GIt y Github
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
 
Git: Aprovecha las ventajas del control de versiones distribuido
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
 
Curso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en GithubCurso: Publicando mi proyecto web en Github
Curso: Publicando mi proyecto web en Github
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git 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 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
 
Git + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XIIGit + Github - Betabeers Córdoba XII
Git + Github - Betabeers Córdoba XII
 
Control de versiones con Git
Control de versiones con GitControl de versiones con Git
Control de versiones con Git
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Control de versiones con GIT
Control de versiones con GITControl de versiones con GIT
Control de versiones con GIT
 
PPT Git GitHub
PPT Git GitHubPPT Git GitHub
PPT Git GitHub
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 
Versionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativoVersionando proyectos con Git, desarrollo de software colaborativo
Versionando proyectos con Git, desarrollo de software colaborativo
 
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?
LaTeX y Git: ¿Cómo controlar archivos de LaTeX eficientemente?
 
05 intro-git-github-heroku-v4
05 intro-git-github-heroku-v405 intro-git-github-heroku-v4
05 intro-git-github-heroku-v4
 

Destacado

Tunea tu wordpress
Tunea tu wordpressTunea tu wordpress
Tunea tu wordpress
Iñaki Arenaza
 
Forjas y repositorios de código en la nube. Euskal Encounter 2015
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 Arenaza
 
Mahara y Moodle - EDUSOL 2011
Mahara y Moodle - EDUSOL 2011Mahara y Moodle - EDUSOL 2011
Mahara y Moodle - EDUSOL 2011Iñaki Arenaza
 
10 Claves para mejorar la seguridad de tu WP
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 Arenaza
 
Las claves para optimizar la seguridad de tu sitio WordPress
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 Arenaza
 
Mahoodle (English)
Mahoodle (English)Mahoodle (English)
Mahoodle (English)
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)
Lo nuevo de Moodle 2.0 (MoodleMoot Colombia 2010)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)
Integración de Mahara con Moodle (MoodleMoot España 2010)
Iñaki Arenaza
 
Monta WordPress en tu empresa
Monta WordPress en tu empresaMonta WordPress en tu empresa
Monta WordPress en tu empresa
Iñaki Arenaza
 

Destacado (9)

Tunea tu wordpress
Tunea tu wordpressTunea tu wordpress
Tunea tu wordpress
 
Forjas y repositorios de código en la nube. Euskal Encounter 2015
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
 
Mahara y Moodle - EDUSOL 2011
Mahara y Moodle - EDUSOL 2011Mahara y Moodle - EDUSOL 2011
Mahara y Moodle - EDUSOL 2011
 
10 Claves para mejorar la seguridad de tu WP
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
 
Las claves para optimizar la seguridad de tu sitio WordPress
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
 
Mahoodle (English)
Mahoodle (English)Mahoodle (English)
Mahoodle (English)
 
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)
Lo nuevo de Moodle 2.0 (MoodleMoot Colombia 2010)
 
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)
Integración de Mahara con Moodle (MoodleMoot España 2010)
 
Monta WordPress en tu empresa
Monta WordPress en tu empresaMonta WordPress en tu empresa
Monta WordPress en tu empresa
 

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

Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
Max Rodriguez
 
Manual para usuarios de Git @patxiredes.pdf
Manual para usuarios de Git @patxiredes.pdfManual para usuarios de Git @patxiredes.pdf
Manual para usuarios de Git @patxiredes.pdf
CarlosJurado61
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
sidelab
 
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]
The Gift of Git [Español: La Palabra de Git]
Alfonso Felipe Cabargas Madrid
 
Cheat-Sheet Git Commands
Cheat-Sheet Git CommandsCheat-Sheet Git Commands
Cheat-Sheet Git Commands
Cristian Omar Jaramillo Méndez
 
Uso de git para el mantenimiento de parches locales o públicos
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 Arenaza
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
Juan Vladimir
 
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdf
MartinBonuccelli
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
ch1l3no
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionados
yuri460292
 
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
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
Antonio Luque Bravo
 
Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!
Cristian Romero Matesanz
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
Mariano Kfuri
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
maxfontana90
 
Dependency Managers
Dependency ManagersDependency Managers
Dependency Managers
NSCoder Mexico
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
Nelson Manuel Ordaz Yglesias
 
Dependency Managers iOS
Dependency Managers iOSDependency Managers iOS
Dependency Managers iOS
Angel Jesse Morales Karam
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
Joan Sebastián Ramírez Pérez
 

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

Git & GitHub Part II
Git & GitHub Part IIGit & GitHub Part II
Git & GitHub Part II
 
Manual para usuarios de Git @patxiredes.pdf
Manual para usuarios de Git @patxiredes.pdfManual para usuarios de Git @patxiredes.pdf
Manual para usuarios de Git @patxiredes.pdf
 
Taller Git en la URJC
Taller Git en la URJC Taller Git en la URJC
Taller Git en la URJC
 
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]
The Gift of Git [Español: La Palabra de Git]
 
Cheat-Sheet Git Commands
Cheat-Sheet Git CommandsCheat-Sheet Git Commands
Cheat-Sheet Git Commands
 
Uso de git para el mantenimiento de parches locales o públicos
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
 
Primeros pasos con git
Primeros pasos con gitPrimeros pasos con git
Primeros pasos con git
 
GIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdfGIT presentación de teoría y practica.pdf
GIT presentación de teoría y practica.pdf
 
Mejora tu productividad con git
Mejora tu productividad con gitMejora tu productividad con git
Mejora tu productividad con git
 
GITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionadosGITHUB control de versiones, para el manejo de repositorios versionados
GITHUB control de versiones, para el manejo de repositorios versionados
 
Presentación GitHub Antonio Luque Bravo y Miguel Ángel Zamora Blanco
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 - Gitlab
Git - GitlabGit - Gitlab
Git - Gitlab
 
Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!Chuleta Github: La potencia con control !!!!
Chuleta Github: La potencia con control !!!!
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Git
GitGit
Git
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Dependency Managers
Dependency ManagersDependency Managers
Dependency Managers
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Dependency Managers iOS
Dependency Managers iOSDependency Managers iOS
Dependency Managers iOS
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 

Más de Iñaki Arenaza

Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools
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 Arenaza
 
Mahara, 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 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 Arenaza
 
Forjas de Software: qué son y para que sirven
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
 
Internacionalización con WordPress (WordPress Euskadi 2014)
Internacionalización con WordPress (WordPress Euskadi 2014)Internacionalización con WordPress (WordPress Euskadi 2014)
Internacionalización con WordPress (WordPress Euskadi 2014)
Iñaki Arenaza
 
Móntate un sitio web completo con WordPress en 4 horas
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 Arenaza
 
Buddypress: Social Networking, in a Box
Buddypress: Social Networking, in a BoxBuddypress: Social Networking, in a Box
Buddypress: Social Networking, in a Box
Iñaki Arenaza
 
Mahoodle moot-colombia-2010
Mahoodle moot-colombia-2010Mahoodle moot-colombia-2010
Mahoodle moot-colombia-2010
Iñaki Arenaza
 
Moodle: 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 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 Arenaza
 
Uso de Mahara con Moodle
Uso de Mahara con MoodleUso de Mahara con Moodle
Uso de Mahara con Moodle
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)
Sesión formativa sobre web 2.0 MGEP-MU (5 y 6 Mayo 2008)Iñaki Arenaza
 

Más de Iñaki Arenaza (10)

Mejora tu desarrollo web con Firefox Developer Edition y Google Chrome DevTools
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
 
Mahara, 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 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
 
Forjas de Software: qué son y para que sirven
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
 
Internacionalización con WordPress (WordPress Euskadi 2014)
Internacionalización con WordPress (WordPress Euskadi 2014)Internacionalización con WordPress (WordPress Euskadi 2014)
Internacionalización con WordPress (WordPress Euskadi 2014)
 
Móntate un sitio web completo con WordPress en 4 horas
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
 
Buddypress: Social Networking, in a Box
Buddypress: Social Networking, in a BoxBuddypress: Social Networking, in a Box
Buddypress: Social Networking, in a Box
 
Mahoodle moot-colombia-2010
Mahoodle moot-colombia-2010Mahoodle moot-colombia-2010
Mahoodle moot-colombia-2010
 
Moodle: 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 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
 
Uso de Mahara con Moodle
Uso de Mahara con MoodleUso de Mahara con Moodle
Uso de Mahara con Moodle
 
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)
Sesión formativa sobre web 2.0 MGEP-MU (5 y 6 Mayo 2008)
 

Último

Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
JuanPrez962115
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 

Último (20)

Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Alan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentaciónAlan Turing Vida o biografía resumida como presentación
Alan Turing Vida o biografía resumida como presentación
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 

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.