Control de versiones con Git y GitHub

De FdIwiki ELP
Revisión a fecha de 17:53 16 feb 2016; Alvasenj (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Control de versiones con Git

Introducción a Git

Git es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente.

Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo. Una versión, revisión o edición de un producto, es el estado en el que se encuentra dicho producto en un momento dado de su desarrollo o modificación.

Aunque un sistema de control de versiones puede realizarse de forma manual, es muy aconsejable disponer de herramientas que faciliten esta gestión dando lugar a los llamados sistemas de control de versiones o SVC (del inglés System Version Control).

Al principio, Git se pensó como un motor de bajo nivel sobre el cual otros pudieran escribir la interfaz de usuario o front-end como Cogito o StGIT. Sin embargo, Git se ha convertido desde entonces en un sistema de control de versiones con funcionalidad plena.

Hay algunos proyectos de mucha relevancia que ya usan Git, en particular, el grupo de programación del núcleo Linux.

En Git tendremos el directorio de trabajo, la staging area y el directorio git (repositorio).

  • En el directorio de trabajo, tendremos todos los archivos de nuestro proyecto, incluidos aquellos que no nos interesa mandar al repositorio.
  • La staging area es una zona o área de espera, a la que mandaremos los archivos que tenemos listos para actualizar en el repositorio.
  • El directorio git es dónde se almacenará el snapshot (imagen actual) de los archivos que están en la staging área.

En Git, los archivos pueden encontrarse en los siguientes estados:

  • untracked: cuando no se ha añadido a ningún repositorio.
  • tracked: el fichero ha sido añadido a algún repositorio.
  • staged: el fichero ha sido añadido al repositorio, pero no ha sido enviado todavía con commit al repositorio.
  • modified: el fichero ha sido modificado.
  • unmodified: el fichero no ha sido modificado.
  • commited: el fichero ya ha sido actualizado en el repositorio.


El ciclo de vida de un archivo en el control de versiones será el siguiente:

  • En un principio cualquier nuevo archivo recién creado en nuestro directorio será un archivo untracked, por que no forma parte de ningún commit (actualización del repositorio).
  • Cuando añadimos el archivo al proyecto, será un archivo unmodified (ya que no se ha realizado ningún cambio sobre él). Pasará a ser modified cuando después de añadirlo, hayamos realizado algún cambio o edición sobre ese fichero.
  • Para que esos cambios pasen a formar parte del repositorio, hay que situarlo en la staging area (listos para ser actualizados) y entonces el archivo estará staged (listo para ser actualizado en el repositorio).
  • Por último al hacer el commit, todos los cambios se almacenarán en el repositorio.
  • A partir del commit, todo ese contenido pasará a ser unmodified y de nuevo el ciclo se repetirá.


Video de introducción a Git y GitHub (hasta el minuto 31:40):

EmbedVideo does not recognize the video service "youtubehd".

Instalación

Para instalar Git es muy sencillo.

Tendremos que acceder a la página: http://git-scm.com/download

Nos descargaremos la versión para nuestro sistema operativo y una vez instalado ya podremos crear un repositorio.

Podemos tener tres tipos diferentes de repositorio:

  • Privado (en nuestro equipo).
  • Externo (en un servidor externo).
  • Interno (en un servidor interno).

Video de la instalación (a partir del minuto 31:40):

EmbedVideo does not recognize the video service "youtubehd".

Creación de un repositorio privado

Todos los comandos que vamos a ver se ejecutarán sobre Git Shell.

El git Shell, visto desde Windows, es un aplicación que abre un entorno de línea de comandos al estilo Linux. Nos permitirá ejecutar típicos comandos de Linux, como crear carpetas, borrar archivos, editar un archivo con vi, etc.

Para crear un repositorio privado, crearemos la carpeta del proyecto y a continuación inicializaremos el repositorio con el comando git init. Para ello abriremos el Git Shell, accederemos a la carpeta dónde vamos a grabar el proyecto y allí dentro ejecutaremos el comando git init.

Si queremos que cualquier carpeta sea un nuevo repositorio independiente de los otros, habrá que inicializarla con git init, sino formará parte del repositorio padre del que cuelga.

Por ejemplo:

<syntaxhighlight lang="bash">

  1. Accederemos a la ruta deseada y crearemos una carpeta:

mkdir proyecto cd proyecto

  1. Una vez dentro del proyecto inicializaremos el proyecto con el comando "git init":

/proyecto/git init


  1. Después de un mensaje de creación del repositorio, si mostramos el contenido
  2. de la carpeta con un ls -al veremos una carpeta oculta (.git):

ls -al .git

</syntaxhighlight>

Directorios dentro de la carpeta .git

Dentro de la carpeta .git tendremos varias subcarpetas algunas de ellas son las siguientes:

  • HEAD: para el registro de cabeceras.
  • branches: las diferentes versiones que vamos subiendo.
  • config: el archivo de configuración.
  • description: la descripción.
  • hooks: para la ejecución de scripts necesarios para funcionamiento de git.