Gestión de versiones con Git

De Wiki de EGC
Revisión del 11:26 15 oct 2013 de Pneira (discusión | contribuciones) (artículo inicial sobre git)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Git es un sistema de versiones inicialmente diseñado y desarrollado por Linus Torvalds con el fin de ofrecer un sistema de versiones distribuido y eficiente para el núcleo de Linux, empleado hoy día en los populares sistemas operativos Android y Ubuntu.

Introducción histórica

Git fue elaborado para reemplazar a [1], un sistema de versiones no libre que se empleaba para la gestión de versiones del núcleo de Linux.

Órdenes básicas

  • init, para iniciar un repositorio, dentro de la carpeta en la que se quiere realizar la gestión de versiones.
git init
</syntaxhighligh>

Esto crea una carpeta de control .git, con toda la metainformación necesaria para que git sea operativo.

* ''status'', permite saber el estado en el que se encuentra el repositorio.

<syntaxhighlight lang="c">
git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       ejemplo.py
nothing added to commit but untracked files present (use "git add" to track)
  • add, para añadir ficheros y contenido que se pretende versionar:
git add ejemplo.py
</syntaxhighligh>

Tras esto ''status'' indica:

<syntaxhighlight lang="c">
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   ejemplo.py
  • commit, para aplicar los cambios. Requiere un mensaje en el que la primera línea está reservada al título y las siguientes a la descripción. No envía ningún tipo de información por la red.
git commit -a

La opción -a sirve para indicar que se añada también todo lo pendiente de cambios (ficheros modificados).

  • push, envía los cambios acumulados al repositorio de origen (puede tratarse de un repositorio remoto disponible en un servidor, aunque no necesariamente).
  • pull, recupera los cambios acumulados en un repositorio (puede tratarse de un repositorio remoto disponible en un servidor, aunque no necesariamente).
  • clone, genera un repositorio copia de otro repositorio de origen (puede tratarse de un repositorio remoto disponible en un servidor, aunque no necesariamente).

<syntaxhighlight lang="c"> git clone git://git.netfilter.org/iptables </syntaxhighligh>

Diferencias entre git y subversion

Las dos principales diferencias son:

  • git permite configuraciones completamente distribuidas, mientras que subversion sólo permite configuraciones centralizadas.
  • git no requiere conectividad permanente a la red.

Para los que están familiarizados con subversion, está disponible la siguiente documentación en el que se muestran las principales diferencias Git - SVN Crash Course.