Git: una introducci贸n para principiantes

    El desarrollo de software est谩 intr铆nsecamente lleno de desaf铆os. Esto va desde dise帽ar la arquitectura de su software, mantenerlo, corregir errores, implementar y la lista contin煤a. Al comenzar, pensar铆a que la parte f谩cil ser铆a compartir su c贸digo con otros. Despu茅s de todo, son solo archivos de texto, 驴verdad? Puede que esto no sea demasiado dif铆cil con programas extremadamente simples que tienen un solo desarrollador, pero los problemas se agravan a medida que aumenta el n煤mero de colaboradores, as铆 como el tama帽o del proyecto.

    Por ejemplo, 驴c贸mo se comparten las actualizaciones de un c贸digo base con otro desarrollador que trabaja en el mismo proyecto? 驴Enviar铆a constantemente por correo electr贸nico archivos modificados de un lado a otro? 驴Qu茅 pasa si est谩 trabajando en los mismos archivos simult谩neamente? 驴C贸mo detecta y fusiona estos cambios?

    Esta fue exactamente la raz贸n control de versiones Se crearon sistemas (VCS) para permitir la colaboraci贸n, el intercambio y la fusi贸n simult谩neos de cambios en un proyecto.

    Si bien existen varios sistemas de control de versiones, como CVS, SVN, 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 alojan 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谩 intr铆nsecamente limitado por su arquitectura y tiene algunas caracter铆sticas (como ramificaci贸n y fusi贸n) que son “ciudadanos de primera clase”, en lugar de ser un pensamiento posterior como en otros VCS .

    Por lo general, interact煤a con Git a trav茅s de la herramienta de l铆nea de comandos, con el nombre apropiado git. Aunque, ahora hay bastantes herramientas GUI (es decir, Escritorio de GitHub, SourceTreey GitKraken) que le ayuda a utilizar algunas de las funciones m谩s comunes, como la confirmaci贸n, la ramificaci贸n y la fusi贸n. Dado que Git es un poco complejo de usar, algunos principiantes optan por comenzar con estas herramientas GUI. Y aunque 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 de gr谩fico y cada nueva confirmaci贸n crea un nuevo node en el gr谩fico.

    Una rama en Git crea un nuevo node fuera del 谩rbol principal (el node amarillo en la imagen a continuaci贸n) en el que puede realizar cualquier cambio que desee sin afectar el c贸digo base principal. De esta manera, otros desarrolladores pueden continuar trabajando en sus nuevas funciones en ramas separadas mientras usted trabaja en la suya, todo sin interrumpir el progreso de los dem谩s.

    Una vez que haya terminado las actualizaciones en su rama, puede fusionarlas nuevamente en la rama maestra. Una vez hecho esto, todos los que trabajen en el mismo repositorio introducir谩n los cambios en sus sistemas locales. Al realizar cambios de esta manera, evita interrumpir la rama principal.

    Conceptos b谩sicos de Git

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

    En primer lugar, para empezar, 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 suya no lo haga, as铆 es como se hace:

    Mac OS

    Instale Git con el Herramientas de l铆nea de comandos de Xcode o usando el instalador de este enlace.

    Distros basadas en Debian

    $ sudo apt install git-all
    

    Distros basadas en RPM

    $ sudo dnf install git-all
    

    Windows

    Descarga el instalador para Git para Windows y siga 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 init mando:

    $ 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:

    $ git add package.json config.json
    

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

    $ git add src/*.js
    

    Ahora, nuestros archivos a煤n no est谩n comprometidos con Git, solo est谩n preparados. Podemos ver archivos por etapas usando el status mando:

    $ 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 commit mando:

    $ git commit -am "Initial commit"
    

    los -a La bandera le dice a Git que confirme todos los archivos preparados, y la -m flag vamos a 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 realizaron.

    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, enviemos 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:

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

    El primer comando anterior 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 aprender m谩s

    • Crea un repositorio de Git
    • Clonar un repositorio
    • Crear una nueva sucursal
    • Verificar una sucursal remota
    • Agregar todos los archivos a un repositorio
    • Fusionar rama en maestro
    • Eliminar sucursal de forma local y remota
    • Empuje la sucursal local y realice un seguimiento

    Para obtener a煤n m谩s art铆culos sobre el tema, consulte todos nuestros art铆culos de Git.

    .

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *