Vamos a empezar con un poco de introducción. El control de versiones es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante.
Existen diferentes modos de enfocar el control de versiones, las más populares son un repositorio centralizado (SVN) o un repositorio distribuido (Git).
Repositorio centralizado
Esto es un lugar donde se almacena el proyecto en su totalidad. Así los clientes se conectan al repositorio central y pueden descargar el código o hacer commits (enviar sus cambios) hacia él.
Repositorio distribuido
Cada cliente tiene una copia local de todo el proyecto, es decir todo el histórico, etiquetas, ramas,… Así los clientes pueden hacer commits parciales, y pensar en una funcionalidad por rama.
Explicando GIT con un ejemplo
Creo que la mejor forma de aprender es viendo ejemplos. Ahora explico una de las maneras de trabajar con Git (existen otras).
Tengo un proyecto que funciona perfectamente en mi repositorio GIT (al proyecto que funciona se le rama master ) y quiero crear una nueva funcionalidad o experimentar algo nuevo. Entonces hago esto:
>git branch experimento1 >git checkout experimento1
He creado una rama nueva y en esta rama puedo hacer lo que quiera como crear la kill feature de mi proyecto 😉 Incluso puedo hacer commits por si la lio en esta nueva rama.
Sigo trabajando y si al final veo que este experimento me gusta puedo integrarlo con la rama master así:
>git checkout master >git merge experimento1
Pero puede que los cambios no me gusten, o que quiera dejar de momento el proyecto sin el nuevo experimento. Entonces solo tengo que hacer:
>git checkout master >git branch -D experimento1
*Existen otros Sistemas de control de versiones distribuidos (DVCS) como mercurial o Bazaar pero más o menos se basan en los mismo principios.
Razones por las que usar git
- Porque necesito usar un control de versiones en mi proyecto.
-
Se habla de las ventajas de Git frente a subversion, creo que la mayor ventaja es que está de modo y si lo uso molaré más ¿no?
-Es rápido, o eso dicen, mi proyecto no tienen tanta envergadura como para hacerlo.
-Me gusta el manejo de branches (escribiré otro post)
-Porque está github (una forja muy molona 😉
Referencias
http://blog.marcoscrispino.com/2011/06/subversion-vs-git.html
http://nvie.com/posts/a-successful-git-branching-model/
Imágenes de: http://javisantana.github.com/slides/git-svn
Un comentario en “Introducción a GIT”