Git 101

Una introducción a los manejadores de versiones con git.

 

Ing. Alberto Rodríguez Sánchez

Embajador y Colaborador del proyecto Fedora

Temario

  • Introducción a las 4 Fs de Fedora
  • Control de versiones.
  • Breve historia de git.
  • Comandos (muy) basicos.
  • Gitlab, github, bitbucket, pagure.

Los valores del Proyecto Fedora

Libertad

Avanzar en el desarrollo de software libre y contenido libre.

Amistad

Construir una gran comunidad

Características

Desarrollar características que beneficien a todas las distribuciones de Linux, no solo Fedora.

Los primeros

En general, marcar el paso de las tecnologías que revolucionaran el mundo de GNU/Linux

Problemas

  • Falla de Discos.
  • Múltiples copias con distintas versiones.
  • Es difícil mantener colaborar en el mismo código.
  • Errores.
  • Gestión de cambios.
  • Trazabilidad

Sistemas de control de versiones

(VCSs)

 

¿Qué es un control de versiones, y por qué debería importarte?

 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.

Local

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

Centralizado

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.

Distribuido

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

Breve historia de git

Como muchas de las grandes cosas en esta vida, Git comenzó con un poco de destrucción creativa y una gran polémica.

Linux Kernel

Datos

  • Parches (1991-2002)
  • bitkeeper (2002-2005)
  • git (2005-hoy)

Características deseadas

  • 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)

Primeros pasos

  • Instalación
  • Linea de comandos
  • Interfaz grafica

Linux

Windows/Mac

# Ubuntu/Debian
$ sudo apt-get install git-core

# Arch
$sudo pacman -Sy git

# Fedora
$ # Ya esta instalado ;)

https://git-scm.com/downloads

Configuración

$ git config --global user.name  "John Doe"
$ git config --global user.email "johndoe@example.com"
$ git config --list

Estructura de git

  • repository: Lugar donde tu código vive
  • commit: Unidad de cambio en el código.
  • branch: Versión / variante del código.
  • HEAD: Vista actual del código.

clonar y crear un repositorio.

# 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 

Trabajar con nuestro repositorio

$ 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

Colaborar

  • fork
  • pull request
  • merge

Únete y haz lo que mas te guste

Taller de Git 101

By Alberto Rodríguez Sánchez

Taller de Git 101

  • 692