Professional Documents
Culture Documents
Control de versiones
Herramientas Avanzadas para el Desarrollo de Aplicaciones
Departamento de Lenguajes y Sistemas Inform
aticos
Universidad de Alicante
1 / 34
Contenido
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Introduccion
En que consiste el control de versiones?
Clasificaciones de los scv
Conceptos generales de los scv
Un poco de historia
Git: Historia
Git: Implementacion
Git: Directorio .git
Uso (I)
Uso (II)
Uso (III)
Uso (IV)
Uso (V)
Uso (VI)
Uso (VII)
Uso (VIII)
Uso (IX)
Uso (X)
Instalacion
Interaccion con cvs y svn
Casos de uso
Sera posible un tutorial interactivo?
Un ejemplo sencillo paso a paso
Webs de interes
2 / 34
Posteriormente hacemos
una serie de cambios en el
1
3
/
H o l a mundo .
f e c h a : 27/12/2009
/
5
7
#i n c l u d e <s t d i o . h>
i n t main ( i n t a r g c , c h a r a r g v [ ] )
{
p u t s ( " Hola mundo ! " ) ;
}
/*
* Hola mundo.
* fecha: 22/01/2010
*/
#include <stdio.h>
int main(int argc, char** argv) {
printf("Hola mundo!");
}
3 / 34
fallo1 .
Conocer qui
en los realiz
o (caso de trabajar en grupo).
Deshacerlos para recuperar la version anterior (en caso de haberla
perdido).
Aislarlos para enviarselos a otro desarrollador para que los aplique a la
Y la anterior de la anterior?...
4 / 34
un proyecto.
En adelante scv .
5 / 34
Colaborativos
Exclusivos
6 / 34
Copia de trabajo
modificar.
7 / 34
La acci
on empleada para obtener una copia de trabajo
desde el repositorio. En los scv distribudos -como Git- esta operacion
se conoce como clonar el repositorio por que, ademas de la copia de
trabajo, proporciona a cada programador su copia local del repositorio
a partir de la copia maestra del mismo.
La acci
on empleada para llevar los cambios hechos en la
copia de trabajo a la copia local del repositorio3 . Esto crea una nueva
revision de los archivos modificados. Cada commit debe ir
acompa
nado de un Log Message el cual es un comentario4 que a
nadimos
a una revision cuando hacemos el commit oportuno.
3
4
Check In / Commit
Push
Check In.
Una cadena de texto que explica el commit.
8 / 34
Acci
on empleada para actualizar nuestra copia
local del repositorio a partir de la copia maestra del mismo, ademas
de actualizar la copia de trabajo con el contenido actual del
repositorio local.
Conflicto Situaci
on que surge cuando dos desarrolladores hacen un
commit con cambios en la misma regi
on del mismo fichero. El scv lo
detecta, pero es el programador el que debe corregirlo.
Update/Pull/Fetch+Merge/Rebase
9 / 34
Un poco de historia
SCCS
Cvs
BitKeeper
Bazaar, bzr
mercurial
Git
implementaci
on libre de GNU,
,
RCS
Subversion
monotone
darcs
Perforce
10 / 34
Git: Historia
Los desarrolladores de linux emplean
BitKeeper
hasta 2005.
el dia 6 de abril.
Git se auto-hospeda el 7 de abril de 2005.
El primer n
ucleo de linux gestionado con git se libera el 16 de junio
Su p
agina oficial:
.
11 / 34
Git: Implementacion
SHA-1
12 / 34
Proyecto/.git/
config
description
HEAD
index
branches
packed-refs
hooks
info
logs
objects
refs
heads
remotes
tags
origin
HEAD
master
13 / 34
Uso (I)
Creamos el repositorio:
Iniciacion
2
14 / 34
Uso (II)
A
nadimos archivos y guardamos:
Anadir, guardar
2
15 / 34
Uso (IIb)
Pu
ll
Remote repository
Push
Pull
Fetch
Local repository
Commit
Index (cache)
Checkout
branch
Add
Working directory
16 / 34
Uso (III)
Configuraci
on: archivos .git/config o ~/.gitconfig.
El primero es particular del proyecto actual y el segundo es general
Configurar
2
4
17 / 34
Uso (IV)
Ramas
1
3
5
18 / 34
Uso (V)
Informacion
2
4
> git
> git
...
> git
> git
status
log
show
diff
19 / 34
Uso (VI)
Descartar cambios
1
Repositorios remotos
2
4
> git
> git
...
[ ssh ]
> git
20 / 34
Uso (VII)
>
>
>
>
>
>
>
git
git
git
git
git
git
git
21 / 34
Uso (VIII)
stash
1
bisect
1
22 / 34
Uso (IX)
23 / 34
Uso (X)
Herramientas gr
aficas
gitk
git gui
git view
gitg
giggle
gource
Interfaz desde
anjuta
geany
eclipse
, emacs
magit
emacs git
24 / 34
Instalacion
git
, el cual recientemente se ha
renombrado a gnuit.
25 / 34
svn
1
5
7
26 / 34
hacer pull ?
git branch --track ramalocal origin/master
Se puede crear una rama que no parta del u
ltimo commit de
otra?...s:
git branch --no-track feature3 HEAD~4
Qui
en hizo que commit en un fichero?:
la rama principal?:
git checkout -b fixes
hack...hack...hack
git commit -a -m "Crashing bug solved."
git checkout master
git merge fixes
27 / 34
test ?:
git checkout test~1 -- src/
Y si he modificado varios ficheros y quiero dejar todo como estaba
antes de la modificaci
on?...tenemos varias maneras:
git checkout -f
o tambien:
git reset --HARD
28 / 34
commits ?...s, hay que elegir cual o cuales de los commits que
forman la mezcla (merge) as:
git revert HEAD~1 -m 1
En este ejemplo estaramos deshaciendo s
olo el primero de los
commits que formaban este merge.
C
omo puedo obtener un archivo tal y como se encontraba en una
29 / 34
repositorio?:
git diff
git log --stat
git whatchanged
C
omo puedo saber cuantos commits ha hecho cada miembro del
que he hecho?:
git commit --amend
Abre el editor por defecto y nos permite modificarlo.
30 / 34
31 / 34
32 / 34
Webs de interes
git
git guide
Carls Worth tutorial
git-for-computer-scientists
gitmagic
freedesktop
gitready
progit
winehq
Presentaci
on en vdeo de git hecha por Linus Torvalds
33 / 34