Tema 1. Fundamentos de Git




Git es una herramienta esencial para cualquier desarrollador ya que permite llevar un registro de todos los cambios realizados en el código, trabajar en equipo y tener un control de las versiones de un proyecto.

En este momento comienza tu camino en este apasionante mundo, donde aprenderás los conceptos básicos de Git, como: crear un repositorio, hacer commit, crear ramas y hacer merge. También aprenderás a utilizar Git en conjunto con plataformas en línea como GitHub y GitLab, no te preocupes si no comprendes todavía los conceptos mencionados, durante este tema y temas subsecuentes tocaremos de manera práctica cada aspecto de forma simple y dinámica.

¡Bienvenido!




¿Qué es Git?

Git es un sistema de control de versiones que funciona de manera distribuida, lo que significa que cada copia del proyecto forma un repositorio completo en cada computadora. Esto permite trabajar de forma independiente y remota con facilidad. Los desarrolladores hacen cambios localmente y luego sincronizan su copia con el servidor. Esto es diferente al control de versiones centralizado, donde los cambios deben ser hechos en un servidor específico antes de crear nuevas versiones (Microsoft, 2022).

Git es una excelente opción para cualquier equipo debido a su flexibilidad y popularidad. Muchos desarrolladores y estudiantes universitarios ya saben cómo usarlo. La comunidad de usuarios ha creado recursos para enseñar a otros y la popularidad de Git hace fácil encontrar ayuda cuando sea necesario. La mayoría de los entornos de desarrollo tienen compatibilidad con Git y las herramientas de línea de comandos están disponibles en los sistemas operativos principales.


¿Qué son los sistemas de control de versiones centralizados (CVCS)?

Los sistemas de control de versiones centralizados permiten manejar cada versión en las que todos los cambios deben ser registrados dentro de un repositorio centralizado, que es el único lugar donde se almacenan y administran las versiones del código. Los desarrolladores trabajan con una copia local del depósito y deben sincronizar sus cambios con el almacén central antes de crear nuevas versiones (Unity Technologies, s.f.).

Estos sistemas requieren una conexión constante a internet para que los desarrolladores puedan realizar operaciones de lectura y escritura. El repositorio central es el único lugar donde se almacenan las versiones del código y tiene un control estricto sobre quién tiene acceso a él y cómo se maneja el código.

Algunos ejemplos de sistemas de control de versiones centralizados son:

  • CVS.
  • Subversion.
  • Perforce.
  • Visual SourceSafe (VSS).
  • ClearCase.
  • StarTeam.
  • PVCS.
  • Serena PVCS.
  • Continuus/CM.
  • MKS Source Integrity.
  • Rational ClearCase.
  • Code Co-op.
  • Microsoft Team Foundation Server (TFS).

Es importante mencionar que hay otros sistemas de control de versiones centralizados que no están mencionados en esta lista, pero la mayoría de ellos ya no son utilizados debido a la popularidad de sistemas de control de versiones distribuidos como Git, Mercurial, entre otros.


¿Qué son los sistemas de control de versiones distribuidos (DVCS)?

Los sistemas de control de versiones distribuidos son sistemas de control de versiones en los cuales cada copia del repositorio es un depósito completo, esto quiere decir que cada copia del repositorio contiene toda la historia del proyecto. Los desarrolladores pueden trabajar de forma independiente o remota y sincronizar sus cambios con otras copias del almacén cuando estén listos (Unity Technologies, s.f.).

Los desarrolladores pueden hacer commit, crear ramas y fusionar cambios en su copia del repositorio sin necesidad de conectarse a un servidor central. Esto significa que los desarrolladores pueden trabajar sin conexión o con conexiones inestables. También pueden resolver conflictos de manera más fácil y rápida.

Algunos ejemplos de sistemas de control de versiones distribuidos son:

  • Git.
  • Mercurial.
  • Bazaar.
  • BitKeeper.
  • Monotone.
  • Darcs.
  • Fossil.
  • Gogs.
  • GitLab.
  • GitHub.
  • SourceForge.
  • Gitbucket.
  • Gitblit.
  • Gitea.
  • GitLab.
  • GitLab Community Edition (CE).
  • GitLab Enterprise Edition (EE).

Es importante mencionar que hay muchos otros sistemas de control de versiones distribuidos disponibles, algunos de los cuales son menos conocidos, pero que pueden ser adecuados para ciertos proyectos o equipos.


La historia de Git

En el año 2005 Linus Torvalds, el creador del sistema operativo Linux, desarrolló Git, el sistema de control de versiones distribuido, para manejar el código fuente de Linux. Antes de Git, el proyecto Linux utilizaba un sistema de control de versiones centralizado llamado BitKeeper, pero después de una disputa con los desarrolladores de BitKeeper, Torvalds decidió crear un sistema de control de versiones propio.

Git se lanzó al público el mismo año de su creación y rápidamente ganó popularidad entre los desarrolladores de software. A medida que más y más desarrolladores comenzaron a usar Git, se crearon una gran cantidad de herramientas y servicios para trabajar con él, como GitHub y GitLab.

Hoy en día, Git se ha convertido uno de los más populares sistemas de control de versiones para el desarrollo de software y se usa en una amplia variedad de proyectos, ya sean personales de software de código abierto o incluso comerciales de gran envergadura.


Fundamentos de Git

Para comprender Git, hay que identificar los siguientes conceptos:

  • Repositorio: un repositorio de Git es una carpeta en la que se almacena toda la información de un proyecto, incluyendo el historial de cambios. Cada repositorio contiene una copia completa del código fuente y su historial.
  • Commit: un commit es una acción que registra los cambios en el repositorio. Cada commit tiene un identificador único (hash), un mensaje de commit y un puntero al estado anterior del código.
  • Ramas: las ramas son versiones independientes del código en un repositorio. Cada rama puede tener un conjunto diferente de cambios y se utilizan para trabajar en características nuevas, solucionar problemas y crear versiones independientes del código.
  • Merge: el proceso de combinar cambios de una rama en otra se conoce como merge.
  • Remote: es una copia del repositorio de forma remota.
  • Push: comando responsable de la subida de cambios hechos a una rama de trabajo propia y/o remota perteneciente a tu equipo de trabajo.
  • Pull request: solicitud que un colaborador hace al propietario del proyecto para realizar o sugerir un cambio.
  • Pull: actualización mediante la descarga de los últimos cambios desde el servidor o repositorio remoto para fusionarlos con el repositorio local.
  • Fetch: realiza la descarga de datos nuevos del repositorio remoto, pero no integra ninguno de estos nuevos datos en los archivos de trabajo locales.

Línea de Comandos

La línea de comandos de Git es una interfaz de línea de comandos (CLI) que permite interactuar con el sistema de control de versiones Git. A través de comandos de Git, los usuarios pueden realizar tareas comunes como crear y administrar repositorios, agregar y controlar cambios en los archivos, colaborar con otros desarrolladores, crear y fusionar ramas, entre otras.

La línea de comandos de Git es una herramienta muy poderosa, ya que permite realizar tareas avanzadas y proporciona un gran control sobre el sistema de control de versiones. Sin embargo, también puede ser un poco difícil de aprender al principio si no se tiene experiencia con la línea de comandos.

Algunos ejemplos de comandos de Git son:

  • git init: para crear un nuevo repositorio.
  • git add: para agregar cambios al área de preparación.
  • git commit: para guardar los cambios.

El listado de comandos completo puedes obtenerlo en la línea de comandos de Git, mediante el comando git help.


¿Cómo funciona el núcleo de Git?

El núcleo de Git se compone de tres secciones principales: el área de trabajo, el área de preparación y el área de almacenamiento.

  • El área de trabajo es donde se realizan los cambios al código fuente. Los archivos se pueden modificar, eliminar o agregar.
  • El área de preparación es donde se preparan los cambios para ser guardados en el repositorio. Los cambios se agrupan en un "commit" y se asigna un mensaje que describe los cambios realizados.
  • El área de almacenamiento es donde se guardan los commits; mantiene el historial completo del proyecto, incluyendo cada versión del código y los cambios realizados.

Instalación de Git

Git es compatible con la mayoría de los sistemas operativos populares, incluyendo:

  • Windows.
  • Linux.
  • macOS.

En Windows, Git puede ser ejecutado en una ventana de comandos o mediante una interfaz gráfica de usuario, como Git Bash o Git GUI. En Linux y macOS, Git se ejecuta principalmente en una terminal (Atlassian, s.f.).

Además de los sistemas operativos de escritorio, Git también está disponible en sistemas operativos móviles y en plataformas en la nube, como GitHub, GitLab, Bitbucket, entre otros. Esto permite a los desarrolladores trabajar en sus proyectos desde cualquier lugar y desde cualquier dispositivo. A continuación, exploraras los pasos para instalar Git en cada sistema operativo:


Instalación en GNU/Linux. La gran mayoría de distribuciones actuales de Linux ya traen Git por defecto. La forma de verificar o instalar Git es la siguiente:

  • Abrir una terminal en su sistema Linux.
  • Verificar si Git ya está instalado en su sistema ejecutando el siguiente comando: git –version. Si Git ya está instalado, se mostrará la versión actual, si no se muestra ninguna información o si se muestra un error, Git no está instalado.
  • Para instalar Git en sistemas basados en Debian o Ubuntu, utilice el siguiente comando: sudo apt-get install git. Para sistemas basados en Red Hat o Fedora, utilice el siguiente comando: sudo yum install git.
  • Una vez que se complete la instalación, verificar que la instalación sea exitosa ejecutando el comando git –version nuevamente. Se mostrará la versión de Git instalada en tu sistema.

Instalación en Mac. A diferencia de Linux, en Mac no viene por defecto instalado Git, pero su instalación puede ser igual de simple; para instalar Git en Mac sigue los siguientes pasos:

  • Abrir la aplicación “Terminal” en su sistema Mac.
  • Verificar si Git ya está instalado en su sistema ejecutando el siguiente comando: git –version. Si Git ya está instalado, se mostrará la versión actual, si no se muestra ninguna información o si se muestra un error, Git no está instalado.
  • Una forma fácil de instalar Git en Mac es mediante el uso de un administrador de paquetes como Homebrew. Para instalar Homebrew, abre la terminal y ejecuta el siguiente comando: /bin/bash -c “$(curl –fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh

  • Una vez que se haya instalado Homebrew, puede instalar Git ejecutando el siguiente comando: brew install git.
  • Una vez que se complete la instalación, verificar que la instalación sea exitosa ejecutando el comando git –version nuevamente. Se mostrará la versión de Git instalada en tu sistema.

Instalación en Windows. A diferencia de Linux y Mac que hacen uso de la línea de comandos, la instalación en Windows es mediante una interfaz gráfica que facilita la instalación a la mayoría de los usuarios; para instalar Git, realiza los siguientes pasos:

  1. Descargar el instalador de Git desde el sitio web oficial de Git:
  2. Software Freedom Conservancy. (s.f.). Downloads. Recuperado de https://git-scm.com/downloads

    El uso y descarga del software deberá apegarse a los términos y condiciones del sitio oficial del fabricante y su uso será responsabilidad de quien lo descargue. Tecmilenio no tiene licencia ni posee los derechos sobre dicho software.

  3. Ejecutar el instalador descargado. El asistente de instalación te guiará a través de los pasos necesarios para instalar Git en su sistema.
  4. Durante la instalación, se deben seleccionar las opciones deseadas, pero hay que asegurarse de seleccionar “Use Git from the Windows Command Prompt” para poder utilizar Git desde la línea de comandos (es recomendable dejar todos los demás parámetros por defecto, básicamente es presionar el botón “Next” en cada ventana).
  5. Una vez que se complete la instalación, deberás abrir la “Línea de comandos” o “Windows Command Prompt”.
  6. Verificar si Git se ha instalado correctamente ejecutando el comando git –version. Se mostrará la versión de Git instalada en tu sistema.

Configurar Git

Existen varias configuraciones que se pueden realizar en Git, aquí se describen algunas de las más comunes:



Configuraciones:

  • Configurar tu nombre de usuario y correo electrónico:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.

  • Configurar un editor de texto:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.

  • Configurar el color de los comandos de Git:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.

  • Configurar la diferencia visual entre los archivos:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.

  • Configurar el manejador de credenciales:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.

Estas son solo algunas de las configuraciones más comunes, pero hay muchas más opciones disponibles. Puedes verificar todas las configuraciones disponibles usando el comando git config –help.

Es importante mencionar que las configuraciones se pueden realizar tanto a nivel global como a nivel local, para configuraciones específicas.


Inicializando nuestro primer repositorio en un directorio existente

Para inicializar un repositorio Git en un directorio específico, sigue estos pasos (Atlassian, s.f.):

  1. Abrir una terminal o línea de comandos en su sistema y navegar hasta el directorio en el que desea inicializar el repositorio. Puede utilizar el comando “cd” para cambiar de directorio.
  2. Una vez en el directorio deseado, ejecute el comando git init. Este comando creará una carpeta oculta llamada ".git" en el directorio actual, que contendrá toda la información del repositorio.


  3. Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
    fines educativos.

  4. Si desea verificar que el repositorio se ha inicializado correctamente, ejecute el comando git status. Este comando mostrará el estado actual del repositorio y si todavía no hay ningún archivo agregado, se mostrará un mensaje que indica que el repositorio está vacío.


Iniciar un repositorio:


Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
fines educativos.


Clonando un repositorio existente

El clonado de un repositorio en Git es el proceso de crear una copia exacta de un repositorio existente en otra ubicación. El proceso de clonado se realiza mediante el uso del comando git clone, el cual permite crear una copia completa del repositorio, incluyendo todo su historial de commits, ramas y etiquetas. La copia resultante es un repositorio independiente y totalmente funcional, con su propia historia y capacidad para aceptar commits y crear ramas.

Una vez clonado el repositorio, se puede trabajar en la copia localmente y hacer commits y ramas sin afectar al repositorio original. También puede optar por sincronizar sus cambios con el repositorio original mediante el uso de comandos como git push y git pull.

Para clonar un repositorio existente en Git, sigue estos pasos:

  1. Abre una terminal o línea de comandos en su sistema y navega hasta el directorio en el que deseas clonar el repositorio. Puedes utilizar el comando “cd” para cambiar de directorio.
  2. Copia la URL del repositorio que desea clonar. Lograrás encontrar esta URL en la página del repositorio en GitHub o en otra plataforma similar.
  3. Ejecuta el comando git clone de manera previa al URL del repositorio. Este comando descargará una copia del repositorio en el directorio actual. Por ejemplo:



  4. Clonar un repositorio:


    Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para
    fines educativos.

  5. Una vez que se complete la clonación, se creará una carpeta con el nombre del repositorio clonado. Se puede acceder a esta carpeta y comenzar a trabajar en el repositorio.
  6. Si el repositorio remoto tiene actualizaciones, puedes traerlos hacia tu copia local utilizando el comando git pull.

Es importante mencionar que el clonado de un repositorio es útil cuando se trabaja en equipos, ya que cada miembro del equipo puede tener su propia copia del repositorio y trabajar en ella de manera independiente, y luego fusionar sus cambios en una sola versión.





Ojalá hayas disfrutado aprendiendo los fundamentos de Git, y que ahora tengas una mejor comprensión de cómo funciona este sistema de control de versiones. Ya sea que pienses trabajar en un proyecto individual o en equipo, Git te permitirá manejar tus cambios de manera eficiente y organizada.

Recuerda que a medida que vayas trabajando con Git, siempre puedes volver a estos fundamentos para refrescar tus conocimientos y seguir mejorando tu fluidez con el sistema. Asimismo, si tienes alguna duda o problema, no dudes en buscar ayuda, en la comunidad de Git hay mucha información y recursos disponibles.




Asegúrate de:

  • Comprender la importancia de Git para tu uso como programador.
  • Identificar la forma de instalar en tu sistema operativo para tener Git en tu computadora.
  • Comprender la forma en que puedes clonar un repositorio remoto para descargarlo en tu computadora.



  • Atlassian. (s.f.).  Aprende Git con Bitbucket Cloud.
    Recuperado de https://www.atlassian.com/es/git/tutorials/learn-git-with-bitbucket-cloud
  • Microsoft. (2022).  ¿Qué es Git?
    Recuperado de https://learn.microsoft.com/es-es/devops/develop/git/what-is-git
  • Unity Technologies. (s.f.). ¿QUÉ ES EL CONTROL DE VERSIONES?
    Recuperado de https://unity.com/es/solutions/what-is-version-control



Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.

Lecturas
Para conocer más acerca de fundamentos de Git, te sugerimos revisar lo siguiente:


Videos
Para conocer más acerca de fundamentos de Git, te sugerimos revisar lo siguiente:

  • Antonio Sarosi. (2021, 27 de noviembre). La GENIALIDAD de GIT! Así es como FUNCIONA por DENTRO [Archivo de video].
    Recuperado de https://youtu.be/LjwR--_ZUt8
  • Código con Juan. (2019, 1 de agosto). 07 - Instalar Git en Mac [Archivo de video].
    Recuperado de https://youtu.be/0elQRkxyQYs
  • DECODE Programacion. (2021, 2 de enero). ▶️ Cómo INSTALAR GIT 👩🏿‍💻 en DEBIAN y UBUNTU (2021) - ⚡️CURSO COMPLETO DE GIT y GITHUB [Archivo de video].
    Recuperado de https://youtu.be/xSOBoBa3CqY
  • doneberDev. (2021, 17 de junio). Instalación de Git en Windows paso a paso [Archivo de video].
    Recuperado de https://youtu.be/cYLapo1FFmA



  • Computadora con acceso a Internet.





La obra presentada es propiedad de ENSEÑANZA E INVESTIGACIÓN SUPERIOR A.C. (UNIVERSIDAD TECMILENIO), protegida por la Ley Federal de Derecho de Autor; la alteración o deformación de una obra, así como su reproducción, exhibición o ejecución pública sin el consentimiento de su autor y titular de los derechos correspondientes es constitutivo de un delito tipificado en la Ley Federal de Derechos de Autor, así como en las Leyes Internacionales de Derecho de Autor.

El uso de imágenes, fragmentos de videos, fragmentos de eventos culturales, programas y demás material que sea objeto de protección de los derechos de autor, es exclusivamente para fines educativos e informativos, y cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por UNIVERSIDAD TECMILENIO.

Queda prohibido copiar, reproducir, distribuir, publicar, transmitir, difundir, o en cualquier modo explotar cualquier parte de esta obra sin la autorización previa por escrito de UNIVERSIDAD TECMILENIO. Sin embargo, usted podrá bajar material a su computadora personal para uso exclusivamente personal o educacional y no comercial limitado a una copia por página. No se podrá remover o alterar de la copia ninguna leyenda de Derechos de Autor o la que manifieste la autoría del material.