Git httpyigitscm.com
Git es un software de control de versiones
distribuido pensado para la eficiencia y confiabilidad del
mantenimiento de versiones de aplicaciones cuando éstas
tienen un gran numero de archivos de codigo fuente.
El disefo de Git resulta de la experiencia del disefador de
Linux, Linus Torvalds, manteniendo una enorme cantidad
de cédigo distribuido y gestionado por mucha gente, que
incide en numerosos detalles de rendimiento.Caracteristicas
- Soporte al desarrollo no lineal. Las ramas en Git van muy
baratas (crear una rama y fusionar posteriormente es
trivial).
- Desarrollo distribuido. Cada desarrollador tiene una
copia local del repositorio.
+ Compatibilidad con protocolos y sistemas ya existentes:
HTTP, FTP, rsync, 0 SSH.
- Autenticaci6n criptografica del historial. Una vez hecho
un commit no es posible hacer cambios sin ser detectado.Instalaci6n
La instalacin de Git en Linux dependera de
la plataforma, pero suele ser un proceso
trivial ya que viene empaquetado en todas
las distribuciones.
# En Ubuntu/debian
$ sudo apt-get install git-core
# En Archlinux
$ sudo pacman -S git
En Windows 0 MacOSX se utiliza un instalador visual, es
decir, que es también muy sencillo.Plataformas
En qué plataformas funciona Git?
- Linux. Es su platafoma nativa.
+ Sistemas POSIX. Con ello cualquier variante Unix: BSD,
Solaris, Darwin (MacOSX), etc.
- Windows. A través de la siguiente implementaci6n:
msysGit. Podemos afiadirle opcionalmente una extension
de shell que nos permita trabajar con git visualmente:
TortoiseGit.Correspondencias con Subversion
Git
git add
git rm
git mv
git diff
git log
git status
git commit -a
git clone
git checkout
git branch
Subversion
svn add
svn rm
svn mv
svn diff | less
svn log | less
svn status
syn commit
svn checkout
svn revert
svn copy El indice (staging area
El indice de Git es una zona intermedia que almacena los
cambios que queremos hacer efectivos en el préximo
commit, es decir, una zona a medio camino entre el
repositorio local y tu directorio de trabajo.
Lo utilizaremos para construir un commit que agrupe
modificaciones en varios archivos.
Cuando hagamos el commit, se enviaran los cambios que
hayamos especificado en el indice, que no tiene por qué
coincidir con lo que haya en nuestro directorio de trabajo.
El comando que nos muestra la informacién sobre el estado
del indice es git status.DO
Ejemplo de un ‘git status’
t-in-practice$ MlS "snapshots"
Diferencia fundamental con respecto al _ oh
modo de trabajar de otros SCM. Git trabaja 2
almacenando instantaneas de un conjunto
de archivos modificados (y planificados a
través del indice). Otros sistemas de control
de revisiones trabajan a nivel de archivo individual.
En cada instantanea los cambios que se mandan al
repositorio al hacer el commit son los de aquellos archivos
planificados en el indice.Loeal Onerations
Flujo de informacién simplificadoDirectorio de trabajo limpio
Un directorio de trabajo limpio es aquel en
el que no tenemos ningtin archivo | fed
modificado con respecto al ultimo commit,
ni tenemos ningun archivo planificado para
el proximo commit en el indice.
[~/git-puesto-en-practica]$ git status
# On branch master
nothing to commit (working directory clean)Comandos
Inicializar un repositorio s
git init. Es el comando que nos permite
iniciar el control de versiones sobre un
directorio.
# Creamos un directorio y un archivo
$ mkdir helloworld
$ cd hellworld
[~/helloworld]$ echo "Hello World" » README
Initialized empty Git repository in /home/dave/helloworld/ .git/Clonar un repositorio Ss
git clone. Este comando obtiene una copia
local de un repositorio remoto.
# Clonamos el repositorio fuente de esta presentacion
$ git clone git@github. com: tombatossals/git-puesto-en-practica. git
Cloning into 'git-puesto-en-practica’
remote: Counting objects: 49, done
remote: Compressing objects: 100% (40/40), done.
remote: Total 49 (delta 11), reused 44 (delta 6)
Receiving objects: 100% (49/49), 425.79 KiB | 117 KiB/s, done.
Resolving deltas: 100% (11/11), done.
$ cd git-puesto-en-practica/
[~/git-puesto-en-practica]$ 1s
500.html css first fonts images index.html js README.mdEl directorio de trabajo es muy limpio, la
Unica referencia que veremos al sistema de
control de versiones es un directorio git git
ubicado en el directorio principal del
proyecto.
Cosas que os van a llamar la atencion al clonar y trabajar
sobre un repositorio Git:
- Todo va muy rapido.
* Paratener un historico completo del desarrollo, ocupa
muy poco todo.
- Lamodificaci6n de archivos binarios se gestiona de forma
muy eficiente.Operaciones basicas Ss
add/rm/mv. Son las operaciones mas
basicas sobre archivos en el repositorio
respecto al directorio de trabajo.
# Afladir un archivo local al repositorio
[-/git-puesto-en-practica]$ git add 404.html
# Mover un archivo a otro directorio (también renonbrar)
[-/git-puesto-en-practica]$ git mv TODO first-steps/
# Borrar un archivo del repositorio y local
[-/git-puesto-en-practica]$ git rm holaObtencion de diferencias
Tenemos tres posibles maneras de hacer un
diff.
git diff. Nos muestra las diferencias de los cambios que
todavia no hemos planificado para el proximo commit.
git diff -cached. Nos muestra las diferencias de los cambios
planificados para el proximo commit con respecto al
repositorio.
git diff HEAD. Compara el directorio de trabajo y el ultimo
commit al repositorio.Ss ors
eer reer
1/3 Ejemplo de un ‘git diff’
i
-git a/first-steps/index.html b/first-step:
Pree errs
esceuesio
yeeros
pee ao)