Si sos completamente nuevo en Git, estas líneas te ayudaran a empezar a utilizarlo y entenderlo, sobre todo por que al principio cuesta un poco, sin embargo una vez que le agarramos la mano ya no hay vuelta atrás!

De paso te cuento que he creado una guía de comandos GIT, que contiene los comandos que vas a utilizar la mayoría de las veces y que te ayudará a ahorrar tiempo! Ya no hará falta que busques siempre los mismos comandos una y otra vez. Descargar Guía de Comandos GIT fundamentales

¿Qué es Git?

Git es un sistema de control de versiones distribuido de código abierto (Open Source) y gratuito, diseñado especialmente para gestionar proyectos informáticos (Software) con velocidad y eficiencia sin importar la magnitud del los mismos. Funciona perfectamente para proyectos personales y pequeños, como así también a nivel corporativo de gran escala.

La misión principal de Git es mantener el historial y la trazabilidad de los proyectos y archivos involucrados en los mismos a lo largo del tiempo, esto incluye las manipulaciones y cambios producidos por diferentes usuarios involucrados en un mismo proyecto.

Git almacena toda esta información acerca de la evolución del proyecto en un repositorio, en el cual a lo largo del tiempo, los desarrolladores suben cambios mediante commits. Git almacena su información en la misma carpeta en donde esta el proyecto, en una carpeta oculta llamada .git.

Git mantiene todo el historial de cambios producido por los desarrolladores de software que trabajan en un mismo proyecto, dichos cambios luego se pueden mergear y unificarlos en una sola versión del proyecto. Gracias a esta característica, cuando alguien introduce un error de programación, podemos detectar inmediatamente el código y corregirlo.

Por default, Git crea un branch principal llamado master, en donde el desarrollador puede subir sus cambios mediante un push y obtener las actualizaciones mediante un pull.

Sistema de control de versiones distribuido

Ahora intentaremos explicar en detalle el concepto de sistema de control de versiones distribuido , comencemos:

Sistema de control de versiones significa que Git puede almacenar contenido y todos sus cambios, por lo general, el código que producen los desarrolladores de software.

A medida que pasa el tiempo, el código por lo general evoluciona y se producen cambios en paralelo realizado por distintos programadores, estos cambios son los que gestiona el Sistema de control de versiones, ya que nos ayuda manteniendo el historial de todo lo que ha sucedido en el código.

Git trabaja con un repositorio remoto almacenado en un servidor y un repositorio local almacenado en la computadora de cada desarrollador, por este ultimo motivo se lo conoce como distribuido. Esto significa que el código no es solamente almacenado en el servidor central, sino que una copia de todo el código se encuentra en la computadora de cada programador.

Cada desarrollador tiene una copia local del proyecto en su computadora, lo cual mejora la autonomía del programador, ya que permite trabajar en cualquier momento y lugar, además de no necesitar conexión a internet para utilizar su repositorio local.

¿Por qué necesito aprender Git?

Por lo general, en la vida real, los desarrolladores de software trabajan en equipo, esto significa que necesitan realizar cambios en paralelo, a veces incluso en los mismos módulos del proyecto, por lo que sin un sistema de control de versiones, realmente se tornaría caótico el trabajo. Un sistema como Git es necesario para asegurar el progreso del proyecto.

Git es el sistema de control de versiones mas utilizado a nivel mundial y en la actualidad es prácticamente obligatorio aprender a utilizarlo. Podemos resumir sus ventajas en la siguiente lista:

· Disponer del código fuente cuando sea necesario.

· Almacenar y subir actualizaciones del código fuente.

· Conocer quien fue el autor de una modificación y cuando se realizo la misma.

· Comparar el código de distintas versiones de una aplicación.

· Realizar seguimiento de la evolución del proyecto.

· Almacenar una copia de seguridad del código fuente en caso de emergencia.

· Conocer el historial de modificaciones del proyecto.

· Optimizar el trabajo en equipo y la colaboración.

· Regresar a versiones anteriores de una forma rápida y fácil.

· Disponibilidad de herramientas adicionales que nos facilitan el trabajo.

De esta forma finalizamos el primer post de Git, en el próximo aprenderemos nuevos conceptos, además de como instalarlo y utilizarlo. Para más información o preguntas pueden dejar un comentario. Gracias por leer este articulo!

A continuación dejo algunos links útiles:

Instalación

Lo primero que necesitas hacer para empezar con Git es instalarlo en tu computadora 💻. Para descargarlo podes ir al siguiente link y buscar la versión mas apropiada para tu entorno: https://git-scm.com/downloads.

Git Logo

Si usas Windows (https://git-scm.com/download/win), durante la instalación no te olvides de marcar la opción ‘Git Bash’. Luego en la ventana de configuración de entorno (PATH Enviroment), selecciona preferentemente la tercera opción (estilo de Unix), ya que en este tutorial y los siguientes utilizaremos esta opción. En la configuración de ‘Line ending conversions’, seleccionar la opción ‘Checkout Windows Style, commit Unix style endings’. Por último, en la configuración del emulador de terminal (Terminal emulator) seleccionar la opción ‘MinTTY’. Siguiente, siguiente, aceptar :) y ya deberíamos poder abrir Git Bash desde el Inicio.

Para instalar Git en Linux debemos seguir los pasos mencionados en la web oficial de Git: https://git-scm.com/download/linux, o directamente con el siguiente comando en distribuciones Debian/Ubuntu:

 sudo apt-get install git

Para instalar Git en Mac podemos hacerlo mediante homebrew con el siguiente comando:

 brew install git

Una vez finalizada la instalación debemos comprobar si Git se encuentra efectivamente funcionando en nuestro entorno, para eso intentaremos utilizar el siguiente comando para obtener la versión de Git: git –version.

Existen interfaces gráficas_ para usar Git, aunque por el momento no las vamos a utilizar, los conceptos que aprendas para usar Git en consola son exactamente los mismos que necesitas para las interfaces graficas. Si igualmente quieres explorar estas herramientas podes hacerlo en el siguiente link: https://git-scm.com/downloads/guis

Primeros Pasos

En este punto ya tenemos Git en nuestra computadora y estamos listos para empezar a trabajar! 💪👏 🚀

Necesitamos configurar nuestra identidad en Git por única vez, aunque luego puede ser modificado en caso de ser necesario. Lo podemos hacer de la siguiente manera en la consola:

 git config --global user.name "Fabri Piruzi"
 git config --global user.email fpiruzi@fake__email.com

Creando un repositorio

Luego de las configuraciones, crear un repositorio es el primer paso que debemos aprender para empezar a utilizar Git en un proyecto. Para crear un repositorio utilizamos el comando git init en nuestra consola.

 git init

Hay que aclarar que el repositorio será creado en la carpeta donde estemos en el momento de ejecutar el comando, por lo que si ya tenés un proyecto existente, primero debes dirigirte a la carpeta del proyecto (revisar comandos Bash: ls, cd, mkdir, etc ) y luego ejecutar el comando git init.

El comando git init crea un repositorio Git local en el proyecto, también añade una carpeta oculta llamada .git, que contiene toda la información necesaria para que Git pueda operar.

Sin embargo, si tenés que empezar a utilizar Git y el repositorio ya esta creado de antemano debes clonarlo.

Clonando un repositorio

El comando git clone es utilizado para copiar un repositorio remoto existente en nuestra computadora. Crea una carpeta con el nombre del proyecto, que contiene todos los archivos del repositorio que clonamos.

 git clone url_del_repositorio

Si clonamos un proyecto, no debemos utilizar git init por que el repositorio ya existe en nuestra computadora.

Conociendo el estado de nuestro proyecto

En este punto ya tenemos nuestro repositorio listo, para conocer en que estado se encuentran los archivos del proyecto, cuales han sido modificados, añadidos o eliminados utilizamos el comando git status.

Intenta agregando un archivo cualquiera a la carpeta del proyecto y luego ejecuta el comando git status, de esta forma podrás visualizarlo en la salida de la consola.

 git status

Agregando archivos al repositorio: add & commit

Supongamos que ya has empezado a trabajar en el proyecto y has mejorado una función del código. Para poder mantener esos cambios necesitamos agregarlos a git y para agregar archivos a nuestro repositorio primero debemos utilizar el comando git add. A continuación algunas formas de utilización del comando git add:

 git add path_archivo
 git add path_archivo_1, path_archivo_2, path_archivo_3

Si tenemos muchos cambios en varios archivos distintos, podemos utilizar el comodín . para decirle a Git que queremos agregar todos los cambios que hicimos:

 git add .

También podemos decirle a Git que queremos agregar todos los archivos con una determinada extensión, utilizando el comodín ***** de la siguiente forma (ejemplo con extensión de archivos python):

 git add *.py

COMMITEANDO CAMBIOS

Commit es el comando que nos permite finalmente impactar los cambios en el repositorio local, con el comando git add, los cambios se añaden a una especie de ‘área de preparación’, la cual mantiene registro de todos los cambios que luego deben ser confirmados para formar parte del repositorio local.

El comando git commit requiere de un mensaje de descripción, este mensaje es obligatorio y es el que nos permitirá luego conocer y entender de una manera amigable que fue lo que se cambio en esta operación. Para añadir el mensaje se utiliza el parámetro -m, seguido del propio mensaje entre comillas, a modo de ejemplo: “Mejoras en la función de calculo de ecuación”:

 git commit -m “Mejoras en la función de calculo de ecuación”

Otras operaciones

LOG

Para ver el historial de commits que hemos realizado en nuestro repositorio local podemos utilizar el comando git log.

 git log

El historial muestra quien fue el autor de cada commit, la fecha y el mensaje asociado al mismo, entre otras cosas tales como un commit_id, el cual nos ayuda a identificar cada commit y entre otras cosas poder revertir cambios llegado el caso.

CLEAN

Si por algún motivo hemos creado carpetas o archivos que luego no necesitamos añadir a nuestro repositorio y ni si quiera hemos utilizado el comando git add ( untracked files ), con el comando git clean podemos eliminarlos fácilmente.

git clean -df

Si antes de eliminar los archivos que no están en git queremos ver cuales son, podemos hacerlo con:

git clean -dn

REMOVE

Para eliminar archivos que están siendo trackeados por Git, debemos utilizar el comando git rm

git rm path_archivo

Si el archivo esta adicionalmente en el ‘área de preparación’ (luego de un git add por ej), debemos utilizar el parámetro -f para forzar la eliminación del mismo.

git rm path_archivo -f

Para eliminar los archivos del repositorio Git pero no de tu sistema de archivos se puede utilizar el parámetro - - cached

git rm --cached path_archivo

Repositorios Remotos

Todo lo que hemos hecho hasta el momento con Git queda en nuestra computadora, en nuestro repositorio local. Ahora nos toca aprender como podemos utilizar Git con repositorios remotos y compartir nuestro código con otros, trabajar en equipo, etc.

Existen muchas plataformas online de git: GitHub, BitBucket, GitLab son las mas utilizadas y conocidas a nivel mundial. Para empezar recomendamos GitHub, que es donde la mayoría de los desarrolladores se encuentran. Debes primero crearte una cuenta en el siguiente link: https://github.com/join

Si ya tenés tu cuenta en GitHub, podes crear tu primer repositorio remoto de código siguiendo la guia oficial de GitHub en el siguiente link: https://help.github.com/es/github/getting-started-with-github/create-a-repo

Si ya tenemos nuestro repositorio local creado con anterioridad, podemos asociarlo a nuestro repositorio remoto y subir los cambios de la siguiente manera:

 git remote add origin URL_REPOSITORIO_REMOTO
 git push -u origin master

Ramas de git: Branches

Por default, un repositorio de Git crea un branch llamado master. Un branch o rama en español lo podemos comprender como una ‘copia’ del proyecto en un momento dado, que sigue un determinado desarrollo a lo largo del tiempo, generalmente distinto al que se produce en la rama principal o master. Luego, esos cambios producidos en las ramas pueden ser aplicados a la rama principal mediante un merge.

Técnicamente un branch es un puntero móvil que apunta a un determinado commit. Para conocer en detalle el funcionamiento y como Git crea y almacena los mismos visita el siguiente link Git Branches.

Branch Diagram Example

Podemos crear todos los branches que queramos, para crear un branchusamos el comando git branch, seguido del nombre que queramos asignar al nuevo branch.

 git branch nombre_del_nuevo_branch

Para visualizar la lista de todos los branches que el proyecto tiene utilizamos el comando git branch, al mismo tiempo este comando nos indicará ( en verde con un asterisco ) sobre que branch estamos trabajando.

git branch

También podemos cambiarnos de un branch a otro, para esto utilizamos el comando git checkout:

git checkout nombre_del_branch

Si has hecho cambios en algún archivo en tu branch actual, asegúrate de commitear los cambios antes de cambiar de rama, si no haces esto, estos cambios se aplicaran automáticamente en el branch a donde te has movido, lo cual probablemente no quieras que suceda.

Podemos crear un nuevo branch e intercambiarnos al nuevo branch automáticamente con el comando git checkout -b, luego si hacemos un git branch, veremos que estamos posicionados en el nuevo branch.

 git checkout -b nombre_del_nuevo_branch

Para borrar un branch local utilizamos el comando git branch -d

 git branch -d nombre_del_branch_a_borrar

Para borrar un branch remoto, tenemos dos alternativas y utilizamos el comando git push en ambas ocasiones:

 git push <remote_name> --delete nombre_del_branch_a_borrar
 git push <remote_name> : nombre_del_branch_a_borrar

Obtener actualizaciones y subir cambios: Pull & Push

SUBIR CAMBIOS

Para subir los cambios que hemos realizado en nuestro código, en un branch determinado, utilizamos el comando git push, recordemos que previo a subir los cambios al respositorio remoto debemos haber realizado git add y git commit en nuestro repositorio local.

 git push origin nombre_del_branch

OBTENER ACTUALIZACIONES

Para obtener las actualizaciones producidas por otros desarrolladores en un branch determinado desde el repositorio remoto hacia nuestro repositorio local, utilizamos el comando git pull:

 git pull origin nombre_del_branch

Una buena práctica cuando trabajamos en equipos es hacer siempre un git pull en nuestro branch antes de empezar a trabajar, esto nos evitará dolores de cabeza luego, ya que siempre obtendremos las últimas actualizaciones del código.

Fusionar cambios: Merge

Hacemos un merge cuando queremos aplicar los cambios realizados en un branch determinado.

Para hacer un merge necesitamos al menos dos branches, el branch origen(donde están los cambios) y el branch destino (donde aplicaremos los cambios).

Para poder hacer esto, utilizamos el comando git merge. Para poder utilizar este comando, primero debemos situarnos en el branch destino, el branch donde queremos traer los cambios, luego utilizamos git merge seguido del nombre del branch origen.

 git merge nombre_del_branch_origen

Felicitaciones! En este punto ya conoces los conceptos básicos de Git y como utilizarlo!


Si te gustó este artículo no te olvides de compartirlo! También te invito a ver mi canal de YouTube, o si estás en X , ayudarme compartiendo el link.