Una introducción a los manejadores de versiones con git.
Ing. Alberto Rodríguez Sánchez
Embajador y Colaborador del proyecto Fedora
Avanzar en el desarrollo de software libre y contenido libre.
Construir una gran comunidad
Desarrollar características que beneficien a todas las distribuciones de Linux, no solo Fedora.
En general, marcar el paso de las tecnologías que revolucionaran el mundo de GNU/Linux
Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones específicas más adelante.
Son herramientas funcionan guardando conjuntos de parches (es decir, las diferencias entre archivos) en un formato especial en disco, y son capaces de recrear cómo era un archivo en cualquier momento a partir de dichos parches.
Un ejemplo es rcs disponible en MacOS y con interface grafica en Xcode
Los sistemas de Control de Versiones Centralizados fueron desarrollados para solucionar este problema. Estos sistemas, como CVS, Subversion, y Perforce, tienen un único servidor que contiene todos los archivos versionados, y varios clientes que descargan los archivos desde ese lugar central. Este ha sido el estándar para el control de versiones por muchos años.
Los sistemas de Control de Versiones Distribuidos ofrecen soluciones para los problemas que han sido mencionados. Los clientes no solo descargan la última versión de los archivos, sino que se replica completamente el repositorio.
Ejemplos son Git, Hg, Bazaar y Darcs
Velocidad
Diseño sencillo
Gran soporte para desarrollo no lineal (miles de ramas paralelas)
Completamente distribuido
Capaz de manejar grandes proyectos (como el kernel de Linux) eficientemente (velocidad y tamaño de los datos)
# Ubuntu/Debian
$ sudo apt-get install git-core
# Arch
$sudo pacman -Sy git
# Fedora
$ # Ya esta instalado ;)
https://git-scm.com/downloads
$ git config --global user.name "John Doe"
$ git config --global user.email "johndoe@example.com"
$ git config --list
# clonar un repositorio
$ git clone <url>
# Crear un repositorio
$ cd codigo
$ git init .
# agregar un repositorio remoto un repositorio local
$ git remote add origin remote <repository URL>
$ git remote -v
$ git push origin master
$ git clone <url>
$ git log --graph --all --decorate
# Cambiar de rama si es necesario
$ git checkout <BRANCH>
$ git status
..code..
$ git add <archivos>
$ git commit -am "Mensaje realmente util"
$ git push
# Fetch and merge
$ git pull
# Rebase
$ git pull --rebase