Git: una introducción para principiantes

Una introducción a Git, que cubre los conceptos básicos de qué es Git, cómo funciona y dónde puede encontrar recursos para obtener más información.

El desarrollo de software está intrínsecamente lleno de desafíos. Esto abarca desde la arquitectura de su software, su mantenimiento, la corrección de errores, la implementación y la lista continúa. Al empezar, pensarías que la parte fácil sería compartir tu código con otros. Después de todo, son solo archivos de texto, ¿verdad? Esto puede no ser demasiado difícil con programas extremadamente simples que tienen un solo desarrollador, pero los problemas se complican a medida que crece la cantidad de colaboradores, así como el tamaño del proyecto.

Por ejemplo, ¿cómo comparte actualizaciones de un código base con otro desarrollador que trabaja en el mismo proyecto? ¿Enviaría constantemente por correo electrónico los archivos modificados de un lado a otro? ¿Qué pasa si estás trabajando en los mismos archivos simultáneamente? ¿Cómo detecta y fusiona estos cambios?

Esta fue exactamente la razón por la que se crearon los sistemas control de versiones (VCS), para permitir la colaboración, el intercambio y la fusión de cambios en un proyecto de forma simultánea.

Existen varios sistemas de control de versiones, como CVS, SVN , [Mercurial] (https://en.wikipedia.org/wiki/Mercurial), etc., Git ha surgido como el sistema más popular con diferencia . . . .

Git, un control de versiones distribuido, fue lanzado en 2005 y creado por Linus Torvalds, quien también es el creador de Linux. Es tan popular que está en el centro de varias empresas multimillonarias, como GitHub, GitLab y BitBucket de Atlassian, que albergan repositorios Git públicos y privados.

Dado que Git es tan popular entre los desarrolladores, es una habilidad esencial para aprender. En este artículo, cubriremos los conceptos básicos de qué es Git, cómo funciona y dónde puede encontrar recursos para obtener más información.

¿Qué es Git?

Varios VCS tienen diferentes estructuras. Tome SVN, por ejemplo, que es un repositorio centralizado, lo que significa que tiene un repositorio "maestro". Esto difiere de Git, que está descentralizado y no tiene maestro. En la práctica, un solo repositorio alojado generalmente se comparte entre un equipo, pero los proyectos se pueden bifurcar más fácilmente y no tener ninguna dependencia del repositorio original.

Esta es una gran razón de la popularidad de Git, no está inherentemente limitado por su arquitectura, y tiene algunas características (como bifurcación y fusión) que son "ciudadanos de primera clase", en lugar de ser un complemento. -pensado como en otros VCSs.

Por lo general, interactúas con Git a través de la herramienta de línea de comandos, apropiadamente llamada git. Aunque ahora existen bastantes herramientas GUI (es decir, Escritorio GitHub, Árbol de origen y GitKraken) que lo ayuda a usar algunas de las funciones más comunes, como confirmación, bifurcación y fusión. Dado que Git es un poco complejo de usar, algunos principiantes optan por comenzar con estas herramientas GUI. Y si bien pueden ser extremadamente útiles y ayudarlo a ser productivo, le recomiendo que al menos se sienta cómodo con la versión de línea de comandos para profundizar su comprensión.

Git funciona rastreando qué cambió en cada archivo de un proyecto, quién hizo ese cambio y por qué. Internamente, esto se hace en una estructura gráfica y cada nueva confirmación crea un nuevo nodo en el gráfico.

git master tree

Una rama en Git crea un nuevo nodo fuera del árbol principal (el nodo amarillo en la imagen a continuación) en el que puede realizar cualquier cambio que desee sin afectar la base de código principal. De esta manera, otros desarrolladores pueden continuar trabajando en sus nuevas características en ramas separadas mientras tú trabajas en las tuyas, todo sin interrumpir el progreso de los demás.

git tree with branch

Una vez que haya terminado las actualizaciones en su rama, puede volver a fusionarla con la rama principal. Una vez hecho esto, todos los demás que trabajen en el mismo repositorio extraerán sus cambios en sus sistemas locales. Al realizar cambios de esta manera, evita interrumpir la rama principal.

árbol de git con rama fusionada

Conceptos básicos de Git

Git puede ser complicado, probablemente por eso estás aquí. Por eso, solo cubriremos algunas de las características principales de la herramienta de línea de comandos aquí y proporcionaremos recursos si desea profundizar en cada función.

En primer lugar, para comenzar, querrá instalar git en su sistema. La mayoría de las distribuciones de Mac y Linux vienen con Git preinstalado, pero en caso de que la tuya no lo tenga, aquí tienes cómo hacerlo:

Mac OS

Instala Git con las Herramientas de línea de comandos de Xcode o usando el instalador de este enlace .

Distribuciones basadas en Debian

1
$ sudo apt install git-all

Distribuciones basadas en RPM

1
$ sudo dnf install git-all

Ventanas

Descargar el instalador para Git para Windows y sigue las instrucciones.

Una vez instalado, puede crear un nuevo repositorio ingresando al directorio de su proyecto (un proyecto Node.js en nuestro ejemplo) y usando el comando init:

1
2
$ cd my-project
$ git init

Esto inicializará Git, pero antes de que se rastree algo, debe agregar explícitamente los archivos de su proyecto al repositorio:

1
$ git add package.json config.json

Git facilita un poco este proceso y permite que los comodines seleccionen archivos de forma masiva:

1
$ git add src/*.js

Ahora, nuestros archivos aún no están comprometidos con Git, solo están preparados. Podemos ver los archivos preparados usando el comando status:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   config.json
    new file:   package.json
    new file:   src/index.js
    new file:   src/api.js

Ahora estamos listos para enviar nuestros cambios al repositorio usando el comando commit:

1
$ git commit -am "Initial commit"

El indicador -a le dice a Git que confirme todos los archivos preparados, y el indicador -m nos permite agregar un mensaje de confirmación a través de la línea de comando. Si se omite, se abrirá su editor de texto predeterminado, lo que le permitirá ingresar el mensaje allí. Este mensaje se utiliza para describir los cambios que se produjeron.

Desde aquí puede hacer muchas cosas, como, por ejemplo, etiquetar la confirmación con un número de versión, crear una rama para trabajar en una nueva función o volver a una confirmación anterior si cometió un error.

Para completar nuestro breve ejemplo, empujemos nuestros cambios a un repositorio remoto, permitiendo que otros desarrolladores obtengan los cambios. Para que esto funcione, primero debemos crear un repositorio en la cuenta de GitHub, que luego podemos usar para enviar a:

1
2
$ git remote add origin https://github.com/scottwrobinson/my-project.git
$ git push origin master

El primer comando de arriba le dice a Git la ubicación de nuestro repositorio remoto, que hemos llamado "origen". En el segundo comando, le decimos a Git que envíe nuestro código desde la rama maestra a nuestro servidor de origen. Dependiendo de cómo haya configurado su cuenta de GitHub, es posible que deba ingresar una contraseña o especificar una clave SSH.

Si bien es útil ver los conceptos básicos del uso de una herramienta complicada como Git, todavía hay mucho que aprender y este ejemplo solo rasca la superficie de lo que Git es capaz de hacer. Muchas de estas características están fuera del alcance de este artículo, por lo que proporcionamos una serie de recursos que profundizan en más detalles sobre temas de Git más específicos.

Recursos para obtener más información

Para ver más artículos sobre el tema, consulta todos nuestros Artículos Git.

Licensed under CC BY-NC-SA 4.0