No solo las empresas de­sa­rro­llan proyectos de software de forma co­la­bo­ra­ti­va: también en el sector del código abierto, varios cientos o incluso miles de vo­lu­n­ta­rios y co­la­bo­ra­do­res pueden pa­r­ti­ci­par en la creación, el ma­n­te­ni­mie­n­to, la op­ti­mi­za­ción o la edición de un programa, de­pe­n­die­n­do del tamaño del proyecto. Sería prá­c­ti­ca­me­n­te imposible llevar a cabo estas tareas sin un buen sistema para registrar y controlar los numerosos cambios rea­li­za­dos por todos los de­sa­rro­lla­do­res.

Una de las so­lu­cio­nes más populares en este sentido es Git, un programa de licencia libre que puedes aprender a manejar rá­pi­da­me­n­te y utilizar de forma to­ta­l­me­n­te gratuita. En nuestro tutorial, te enseñamos todos los conceptos básicos para que seas capaz de dar tus primeros pasos con este sistema de control de versiones.

Dominios web
Compra y registra tu dominio ideal
  • Gratis SSL Wildcard para tra­n­s­fe­re­n­cias de datos más seguras
  • Gratis registro privado para más pri­va­ci­dad

¿Qué es Git?

Git es un sistema de control de versiones de­sa­rro­lla­do en 2005 por Linus Thorvalds, el creador de Linux, y publicado bajo la licencia de software libre GPLv2 de GNU. La pa­r­ti­cu­la­ri­dad de esta he­rra­mie­n­ta es que, aunque guarda un re­po­si­to­rio central para cada proyecto, todos los pa­r­ti­ci­pa­n­tes descargan una copia local del mismo en su propio di­s­po­si­ti­vo. Cada una de estas copias co­n­s­ti­tu­ye una copia completa de todo el contenido del re­po­si­to­rio, por lo que no es necesario estar conectado a la red para trabajar. Además, estos archivos sirven como copia de seguridad en caso de que el re­po­si­to­rio principal falle o resulte dañado. Los cambios en los archivos pueden in­te­r­ca­m­biar­se con todos los demás pa­r­ti­ci­pa­n­tes del proyecto en cualquier momento y, si co­rre­s­po­n­de, añadirse al re­po­si­to­rio.

Consejo

Una de las al­te­r­na­ti­vas más conocidas a Git es Su­b­ve­r­sion, una he­rra­mie­n­ta también de código abierto y más conocida como SVN, que se basa en un sistema de gestión central, co­n­tra­ria­me­n­te a Git. En nuestro artículo Git vs. SVN: una co­m­pa­ra­ti­va del control de versiones, te contamos qué tienen en común estos programas y en qué se di­fe­re­n­cian.

Cómo instalar Git en el di­s­po­si­ti­vo

Si quieres empezar a utilizar Git como programa de control de versiones, en primer lugar, debes fa­mi­lia­ri­zar­te con el propio software y su interfaz de usuario. Git está di­s­po­ni­ble para Windows, Unix/Linux y macOS, con di­fe­re­n­tes versiones que presentan pequeñas di­fe­re­n­cias de uso. Después de llevar a cabo la in­s­ta­la­ción estándar co­rre­s­po­n­die­n­te, puedes controlar el programa con el símbolo del sistema o una interfaz gráfica de usuario en cua­l­quie­ra de los sistemas ope­ra­ti­vos.

Nota

Para poder utilizar los comandos ex­pli­ca­dos en este tutorial de Git, los usuarios de Windows deben eje­cu­tar­lo a través de Git Bash, un shell de estilo Unix que emula la línea de comandos de Git y está incluido en el paquete de in­s­ta­la­ción. Si lo prefieres, también es posible controlar el software con el símbolo del sistema o la terminal de Windows, aunque debes tener en cuenta que la es­tru­c­tu­ra de los pa­rá­me­tros de los comandos difiere (por ejemplo, se emplean signos de ídem en lugar de comillas).

En la página oficial del proyecto Git, en­co­n­tra­rás los archivos de in­s­ta­la­ción binarios, las in­s­tru­c­cio­nes para instalar el ad­mi­ni­s­tra­dor de paquetes (sistemas Unix) y las ediciones po­r­tá­ti­les listas para usar para cada sistema operativo. Solo tienes que descargar el paquete de in­s­ta­la­ción deseado o elegir el paquete apropiado mediante el ad­mi­ni­s­tra­dor y, a co­n­ti­nua­ción, seguir las in­s­tru­c­cio­nes del asistente. Ob­via­me­n­te, con las ediciones po­r­tá­ti­les no es necesario llevar a cabo la in­s­ta­la­ción.

Consejo

En la página de descargas de git-scm.com, la comunidad de Git ofrece di­fe­re­n­tes in­te­r­fa­ces gráficas para el sistema de control de versiones. Además, entre otras cosas, pro­po­r­cio­na apli­ca­cio­nes Git para Android e iOS que permiten utilizar esta he­rra­mie­n­ta de código abierto en di­s­po­si­ti­vos móviles.

Git: tutorial para empezar a uti­li­zar­lo paso a paso

Una vez instalado Git, ya puedes utilizar el sistema para controlar las versiones de tus proyectos. Como con cualquier otro programa, el primer paso es co­m­pre­n­der las funciones y comandos básicos para sacarle el máximo partido a la he­rra­mie­n­ta. En nuestro completo tutorial de Git, te ex­pli­ca­mos los comandos más im­po­r­ta­n­tes para co­n­fi­gu­rar y utilizar Git mediante la interfaz de línea de comandos y que puedas crear y ad­mi­ni­s­trar fá­ci­l­me­n­te tu propio re­po­si­to­rio.

Nota

Pese a conocerse desde 2015 que una co­n­fi­gu­ra­ción errónea de Git o, para ser más exactos, del servidor web en activo, pone a los re­po­si­to­rios del sistema de gestión de versiones a di­s­po­si­ción pública en la red, son muchas las webs que a día de hoy aún exponen a sus ficheros. Esto ocurre siempre que un di­re­c­to­rio Git se guarda en el di­re­c­to­rio web raíz del servidor, algo a evitar en todos los casos. Hay dos opciones: o no se guardan nunca aquí o se configura al servidor web de tal manera que no pueda accederse al di­re­c­to­rio .git desde fuera. En esta entrada del blog In­te­r­ne­t­wa­che.org, en­cue­n­tras una guía detallada para proteger el di­re­c­to­rio .git.

Crear o clonar un re­po­si­to­rio Git

El re­po­si­to­rio Git es el di­re­c­to­rio central de un proyecto y, por lo tanto, también el principal punto de contacto para todos los pa­r­ti­ci­pa­n­tes, a través del cual se lleva a cabo el control de todas las versiones. Por ello, el primer paso consiste en crear este re­po­si­to­rio principal o clonarlo (en forma de copia de trabajo) en caso de que vayas a in­co­r­po­rar­te a un proyecto que ya se esté ge­s­tio­na­n­do con Git.

Tanto si quieres co­n­fi­gu­rar el control de versiones para un nuevo proyecto como si acabas de instalar Git para aprender a trabajar con la he­rra­mie­n­ta, debes crear un nuevo re­po­si­to­rio. Para ello, ejecuta el comando cd (change directory) para acceder al di­re­c­to­rio de tu di­s­po­si­ti­vo donde desees ubicarlo:

cd ruta al directorio
Web Hosting
El hosting que crece con tu proyecto
  • Tiempo de actividad de 99.99 % y seguridad ga­ra­n­ti­za­da
  • Aumenta el re­n­di­mie­n­to según el tráfico de tu página web
  • Incluye dominio, SSL, e-mail y soporte 24/7

Una vez allí, introduce el siguiente comando para crear un re­po­si­to­rio .git:

git init

Si ya existe un re­po­si­to­rio Git para el proyecto, solo tienes que in­tro­du­cir el comando git clone seguido de la dirección web o de red de ese re­po­si­to­rio para crear una copia de trabajo en el ordenador:

git clone https://one-test.website/git-repository
Nota

Git es co­m­pa­ti­ble con varios pro­to­co­los de tra­n­s­fe­re­n­cia. Como al­te­r­na­ti­va a HTTPS, utilizado en el ejemplo, puedes recurrir a SSH para acceder a un re­po­si­to­rio, siempre que dispongas de los co­rre­s­po­n­die­n­tes permisos.

Comprobar el estado del re­po­si­to­rio y añadir nuevos archivos al control de versiones

Uno de los conceptos básicos para utilizar Git es organizar ade­cua­da­me­n­te el propio di­re­c­to­rio de trabajo, lo que permite no solo proponer cambios e in­no­va­cio­nes pe­r­so­na­les a un proyecto, que luego son aceptados mediante el comando git commit (enviar), sino también obtener in­fo­r­ma­ción sobre las ac­ti­vi­da­des de otros usuarios. Puedes comprobar si tu copia de trabajo está ac­tua­li­za­da eje­cu­ta­n­do este comando:

git status

Por lo general, en el caso de los re­po­si­to­rios creados re­cie­n­te­me­n­te, o cuando el re­po­si­to­rio principal y la copia de trabajo coinciden por completo, recibirás un aviso de que no se ha mo­di­fi­ca­do el proyecto (No commits yet). Además, Git te informa de que no has co­m­pa­r­ti­do tus cambios para el próximo commit (nothing to commit).

Para añadir un nuevo archivo al control de versiones o para registrar algún cambio para el siguiente commit, introduce el comando git add y el nombre de este archivo, que debe en­co­n­trar­se en tu di­re­c­to­rio de trabajo. En nuestro tutorial, aña­di­re­mos un documento de texto llamado “Test” como ejemplo:

git add Test.txt

Después, cuando vuelvas a comprobar el estado del re­po­si­to­rio, verás que el documento está a la espera de someterse a la siguiente fase de co­n­fi­r­ma­ción de cambios del proyecto, en que estos se aceptarán o no (Changes to be commited):

Confirmar los cambios mediante commit y añadirlos al HEAD

Cualquier cambio que hayas propuesto in­co­r­po­rar al proyecto, como hemos explicado en el punto anterior, debe co­n­fi­r­mar­se con commit para que se incluya en el HEAD. El HEAD es una especie de índice que apunta al último commit efectuado en el entorno de trabajo Git actual (también llamado “rama”). El comando para hacerlo es el siguiente:

git commit
Nota

Antes de ejecutar el comando git commit, no te olvides de comprobar si has marcado todos los cambios que deseas incluir en el re­po­si­to­rio remoto (con git add). De lo contrario, estos serán ignorados, incluso si se en­cue­n­tran en la copia de trabajo guardada en el di­re­c­to­rio.

Después de ejecutar el comando, Git inicia au­to­má­ti­ca­me­n­te el editor que co­n­fi­gu­ra­s­te como pre­de­te­r­mi­na­do durante la in­s­ta­la­ción o que el propio sistema abre por defecto. En el documento, puedes añadir un co­me­n­ta­rio personal sobre el commit pla­ni­fi­ca­do, en el que las líneas anotadas se separan por punto y coma y, por lo tanto, no se muestran más adelante. En cuanto cierres el editor, Git creará el commit:

Como se muestra en la captura de pantalla, después de ejecutar git commit, obtienes un mensaje que resume el commit: entre corchetes figuran, por un lado, el nombre de la rama del proyecto a la que se tra­n­s­fi­rie­ron los cambios (en este caso, master, ya que nuestro re­po­si­to­rio de trabajo también es el re­po­si­to­rio principal) y, por otra parte, la suma de co­m­pro­ba­ción SHA-1 del commit (en este caso, c0fdc90). Les siguen el co­me­n­ta­rio que anotó el propio usuario (aquí, “Test”) y algunos datos concretos sobre los cambios.

Revisar o deshacer commits eje­cu­ta­dos

Una vez aceptados los cambios mediante el comando commit, puedes editar el contenido o eli­mi­nar­lo por completo en cualquier momento más adelante. Por ejemplo, un caso típico sería pre­ci­pi­tar­se al ejecutar commit y olvidarse de algún archivo o co­n­fi­gu­ra­ción im­po­r­ta­n­te. En este caso, puedes registrar archivos nuevos o mo­di­fi­ca­dos a po­s­te­rio­ri mediante el comando git add y volver a tra­n­s­fe­ri­r­los. Para ello, añade --amend al comando estándar:

git commit --amend

Si quieres deshacer el último commit generado, puedes hacerlo con el siguiente comando de Git:

git reset --soft HEAD~1

Este comando cancela el commit re­gi­s­tra­do por última vez en el HEAD. Los archivos que contiene se re­s­ta­ble­cen como “cambios pla­ni­fi­ca­dos para el próximo commit” en el estado del proyecto. Si lo que quieres es eliminar por completo los datos in­tro­du­ci­dos, ejecuta el siguiente comando en lugar del anterior:

git reset --hard HEAD~1

Mostrar el historial de commits

Aprender a gestionar proyectos con Git es es­pe­cia­l­me­n­te útil debido a las ca­ra­c­te­rí­s­ti­cas básicas de control de versiones que ofrece el sistema. Por ejemplo, una gran ventaja de este programa de código abierto es que siempre puedes vi­sua­li­zar los últimos cambios que se han realizado en el re­po­si­to­rio. Para ello, puedes utilizar el siguiente comando de Git:

git log

De manera pre­de­te­r­mi­na­da, el comando git log enumera los commits generados en orden cro­no­ló­gi­co inverso: la suma de co­m­pro­ba­ción SHA-1, el autor (nombre y dirección de correo ele­c­tró­ni­co) y la fecha de cada commit. Además, se muestra un co­me­n­ta­rio in­di­vi­dual que sirve a todos los usuarios como indicador para poder buscar rá­pi­da­me­n­te las versiones. En un apartado anterior de este tutorial de Git, generamos un solo commit con el mensaje “Test”. Al ejecutar el comando, se nos muestra el archivo so­li­ci­ta­do:

El comando git log también puede mo­di­fi­car­se uti­li­za­n­do varios pa­rá­me­tros. En la siguiente tabla, te mostramos algunas de las po­si­bi­li­da­des:

Pa­rá­me­tros para git log De­s­cri­p­ción
-p Muestra también los cambios incluidos en un commit
-2 Enumera solo los dos últimos commits eje­cu­ta­dos
--stat Añade una pequeña es­ta­dí­s­ti­ca a cada registro que muestra qué archivos se han mo­di­fi­ca­do y cuántas líneas se han insertado o eliminado
--pretty Cambia el formato de salida con di­fe­re­n­tes po­si­bi­li­da­des; por ejemplo, --pretty=online enumera todos los commits en una sola línea
--abbrev-commit Muestra solo los primeros ca­ra­c­te­res de una suma de co­m­pro­ba­ción SHA-1
--relative-date Muestra la fecha de un cambio en formato relativo (por ejemplo, “hace dos semanas”)

Incluir commits en el re­po­si­to­rio principal

Hasta ahora, hemos mostrado cómo guardar los cambios como commit en el HEAD del di­re­c­to­rio local. Para que estos también se incluyan en el re­po­si­to­rio principal, debes ejecutar el siguiente comando:

git push origin master

De este modo, Git tra­n­s­fie­re au­to­má­ti­ca­me­n­te todos los commits eje­cu­ta­dos, que hasta ahora solo habían estado en la copia de trabajo, al di­re­c­to­rio principal, que también recibe el nombre de master. Si su­s­ti­tu­yes este nombre por el de otra rama (la del proyecto), los archivos se enviarán di­re­c­ta­me­n­te allí.

Crear, eliminar y enumerar etiquetas en Git

Al igual que muchos otros sistemas de control de versiones, Git tiene una función de eti­que­ta­do que resalta los elementos se­le­c­cio­na­dos en el historial del re­po­si­to­rio. Por lo general, estas etiquetas se utilizan para ide­n­ti­fi­car versiones del software, como 1.0, 2.0 o po­s­te­rio­res, y permitir que estas sean fáciles de acceder en todo momento, incluso en el caso de los proyectos grandes. Git admite dos tipos de etiquetas:

  • Etiquetas anotadas (annotated): se guardan como objetos in­de­pe­n­die­n­tes en la base de datos e incluyen su propia suma de co­m­pro­ba­ción, etiqueta, fecha, nombre y dirección de correo ele­c­tró­ni­co del creador de la etiqueta, así como la firma opcional GNU Privacy Guard (GPG).
  • Etiquetas no anotadas (li­gh­t­wei­ght): al igual que las ramas, solo sirven de re­fe­re­n­cia para ide­n­ti­fi­car un commit. Este tipo resulta útil si solo necesitas una etiqueta temporal o si no quieres guardar datos avanzados.

Para crear etiquetas anotadas en Git, ejecuta el comando git tag -a en el commit que desees. Si también añades el parámetro -m, podrás anotar entre comillas el mensaje que debe incluir la etiqueta di­re­c­ta­me­n­te en el símbolo del sistema. En este tutorial de Git, hemos generado el commit “Test”, que ahora vi­n­cu­la­re­mos a una etiqueta que incluye el mensaje “example tag”:

git tag -a Test -m “example tag”
Nota

Si omites el parámetro -m al generar la etiqueta, Git abrirá au­to­má­ti­ca­me­n­te el editor para que puedas in­tro­du­cir el mensaje de la etiqueta.

Para las etiquetas no anotadas, pro­ce­de­mos de manera similar: en este caso, solo eje­cu­ta­mos el comando básico git tag en el commit deseado y no uti­li­za­mos ningún otro parámetro. En el ejemplo utilizado en este tutorial de Git, el comando sería el siguiente:

git tag Test

En cuanto haya etiquetas en el re­po­si­to­rio, podemos mo­s­trar­las con el me­n­cio­na­do git tag y los pa­rá­me­tros op­cio­na­les -l o --list:

git tag
git tag -l
git tag --list

Para eliminar una etiqueta del di­re­c­to­rio de trabajo local, ejecuta el comando git tag -d. Nuestra re­fe­re­n­cia a “Test” se elimina de la siguiente manera:

git tag -d Test

Ten en cuenta que también debes tra­n­s­fe­rir las etiquetas al re­po­si­to­rio principal de forma manual como commit. Para ello, introduce el nombre de la etiqueta y el comando git push origin. También puedes añadir el parámetro --tags en vez del nombre de la etiqueta, mediante el cual todas las etiquetas generadas se incluyen en el re­po­si­to­rio:

git push origin --tags

Crear, ad­mi­ni­s­trar y eliminar ramas

Las ramas ya me­n­cio­na­das en este tutorial de Git no son, en principio, más que versiones de trabajo in­di­vi­dua­les del re­po­si­to­rio principal, que también se clasifica como una rama llamada master. Mediante esta es­tru­c­tu­ra, Git pro­po­r­cio­na una base perfecta para de­sa­rro­llar ca­ra­c­te­rí­s­ti­cas y funciones de forma in­de­pe­n­die­n­te y co­m­bi­nar­las en etapas po­s­te­rio­res, lo que también recibe el nombre de fusionar (en inglés, merge).

Crear una nueva rama es fácil: solo debes ejecutar el comando git branch y añadir el nombre que quieras poner a la rama. Por ejemplo, puedes generar una rama de ejemplo llamada test_branch de la siguiente manera:

git branch test_branch

Después, puedes cambiar a esta rama en cualquier momento mediante el comando git checkout:

git checkout test_branch

Para combinar dos o más ramas, utiliza el comando git merge. Antes, ejecuta checkout para cambiar al di­re­c­to­rio que debe incluir la otra rama y, después, ejecuta allí este comando, in­clu­ye­n­do el nombre de la rama que se fusionará. Nuestra versión de trabajo test_branch se puede fusionar con el re­po­si­to­rio principal de la siguiente manera:

git checkout master
git merge test_branch

Si has fusionado varias ramas de trabajo y, por lo tanto, ya no te hace falta una rama en pa­r­ti­cu­lar, puedes eli­mi­nar­la fá­ci­l­me­n­te. Para ello, introduce el comando git branch -d y la rama que ya no necesites. Eli­mi­na­re­mos test_branch, nuestro ejemplo en este tutorial de Git, mediante el siguiente comando:

git branch -d test_branch

El único requisito para eliminar una rama es en­co­n­trar­se en otra distinta en ese momento. Por lo tanto, has de cambiar al re­po­si­to­rio principal antes de ejecutar el comando, como puedes ver en la siguiente captura de pantalla:

Consejo

En nuestra Digital Guide también en­co­n­tra­rás in­fo­r­ma­ción sobre "Git branch rename: cómo renombrar una rama local y remota de Git".

Free Cloud Server Trial
Servidor virtual privado para empresas
  • vServer basado en KVM para de­sa­rro­lla­do­res
  • Integrado en IONOS Compute Engine
  • Escalable hasta la nube em­pre­sa­rial Incl. 200 € de crédito inicial en el 1er mes
Ir al menú principal