Jenner Acosta Diaz
Gestor de Versiones de Código

Mejora tu flujo de trabajo con Git

Git es el sistema de control de versiones más utilizado actualmente y uno de los más modernos. Éste permite a los desarrolladores colaborar y realizar cambios en proyectos compartidos, a la vez que mantienen un seguimiento detallado de su progreso.

Instalación

Instala git desde la página oficial

Una vez instalada, tenemos algunos programas que vamos a poder usar, mi favorito es Git bash, ahí podemos ejecutar el siguiente comando:

git --version ó git -v

Configuración Inicial

Iniciamos configurando nuestro usuario, asegurate que sea el mismo que tienes o vas a crear en GitHub

git config --global user.name "Jenner Acosta Diaz"
git config --global user.email my@jenner.pe

Indicamos que Visual Studio Code va a ser nuestro editor por defecto

git config --global core.editor "code --wait"

Si Tienes un problema con el editor, podemos buscar la ruta instalada

git config --global core.editor "'C:\Users\AGT\AppData\Local\Programs\Microsoft VS Code\Code.exe' -n -w"

Usemos Main como la Rama principal

git config --global init.defaultBranch main

Veamos la Configuración global

git config --global -e

Algunos presentan problemas con el CRLF, no es nada serio, es básicamente una interpretación de un carácter. Simplemente ejecuten este comando si presentan el error

//CR LF = True para Windows / Input para Linux-Mac
git config --global core.autocrlf true

Alias en Git

Los alias son atajos customizados que nos van a ayudar con nuestro Git, por lo general tengo 2 alias que son mis favoritos, pimero escribamos en consola:

git config --global alias.s "status --short --branch"

Ya tenemos nuestro primer alias, nos va a dar un resumen del estado de nuestro Git en un formato avanzado solo usando git s

git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"

Este 2do comando nos ayuda a ver los LOG de una manera interactiva

Ahora con solo un git lg vamos a tener un log muy profesional, estos temas lo vamos a ver más adelante y así más adelante vas a crear tus propios alias.

Nuestro primer repositorio

Iniciemos un nuevo Repositorio

git init

Status

Veamos el estado de nuestra rama actual, git se caracteriza por ser como una linea de tiempo, se van creando ramas para crear diferentes lineas de tiempo y asímismo podemos volver a unirlas, a eso lo llamaremos merge, sin dar más vueltas, codifiquemos:

git status

Stage

Es el lugar en el que se encuentran datos de un proyecto y sus cambios, algo así como poner nuestros archivos para producción. Podemos agregar todos los archivos al stage

git add .

También a ciertos archivos requeridos

git add *.html
git add js/*.js

Si queremos agregar todos los archivos de in directorio, solo agregamos el directorio

git add css/

Commit

Es la unidad central en nuestra línea de tiempo Git, es como sacar una fotografía a nuestro código y guardarlo en el historial. Lo podemos hacer de la siguiente manera:

git commit -m "Primer Commit"

Si vamos a hacer una actualización sobre un Commit ya creado podemos usar un atajo que va a hacer el stage y crear el commit en una!

git commit -am "Commit Actualizado"

Git Checkout — .

Puede que casualmente borremos nuestro trabajo, podemos recontruir el repositorio como en el ultimo commit

git checkout -- .

Ramas

Las ramas son como la linea temporal en Git y ahí nace su mágia, podemos crear cuantas ramas creemos y podemos unir diferentes ramas, si tu rama actual se llama master te recomiendo a que la cambien por main

git branch -m master main

Tambien lo podemos cambiar para hacerla por default de manera global

git config --global init.defaultBranch main

Logs

Antes de continuar con las ramas podemos hacer una pruebas y empezar crear commits, con los logs vamos a poder ver una lista de todos los commits realizados en el repositorio.

git log

El problema que podemos ver es que el hash del commit es un poco confuso, y hay mucha información que no es de completa relevancia, pero recuerda que tenemos un alias creado, lo podemos usar.

git lg

Con este pequeño alias, tenemos toda la información minimizada y más simple de leer.

Git ignore

Puede que existan archivos que no nos importe hacer seguimiento, para ello creamos el archivo .gitignore, lo creamos en la raiz del proyecto.

Ahí agregamos todos los archivos que queremos que git lo ignore, obviamente el gitignore si es importante que git le haga seguimiento.

dist/
*.log

Ramas II

Podemos crear diferentes Ramas como:

git checkout newRama

Ahí podemos realizar todos los commits que creamos pertinentes y de ahí volver a la rama principal, a esto lo llamamos Merge

Merge

Va tratar de unir una rama y otra, esto genera 3 posibles escenarios:

Fast-foward

Git detecta que no hay cambio en la rama principal y los cambios pueden ser reintegrados de forma transparente, cada uno de los commits formarán parte de la rama principal como si nunca lo hubiéramos separado

Primero tenemos que estar en la rama a donde nos vamos a unir, vamos a usar el siguiente comando:

git merge newRama

Podemos borrar la rama una vez que ya no la vamos a requerir

git branch -d rama-villanos

Uniones Automáticas

Git detecta que hubo un cambio en la rama principal que las ramas secundarias desconoce, así que al momento de hacer el merge git los agrega de manera automática marcando que en este momento ambas ramas se unieron

Union Manual

En el caso de que una rama aplique sobre una rama principal con las mismas líneas donde vamos a querer hacer los cambios, Git nos va a decir que no se puede, que lo resolvamos de manera manual, una vez resuelto ese conflicto, va a crear un commit nuevo que se conoce como el merge commit.

Solo editamos el archivo y nos quedamos con lo que queremos, y simplemente hacemos un commit con los cambios actualizado, finalizamos eliminando las ramas que no usamos.

Tags – Etiquetas

Son utilizados para marcar versiones o raíces de un programa, hacen referencia a un commit específico.

Creamos un Tag

git tag "1.0.0"

Veamos los Tags Creados

git tag

Vamos a crear nuestra primera version de producción

git tag -a v1.0.0 -m "Version 1.0.0 lista"

GitHub Remote – Push & Pull

Necesitamos crear una cuenta en GitHub, también va a funcionar si usamos otra plataforma, esto va a hacer que nuestro repositorio local esté en la nube.

Agregamos un origen remoto

git remote add origin <url>

Podemos revisar nuestra fuentes remotas:

git remote -v

Ya podemos subir nuestro repositorio a GitHub

git push -u origin main

Recordar e origin en la fuente remota, la cual podemos tener varias fuentes con diferentes nombre y main va a ser la rama que vamos a subir

Push de los Tags de nuestro repositorio

Cuando hacemos un push por lo general no se mandan los tags, para ello podemos hacer:

git push --tags

A los tags podemos crear versiones Release

Pull

Para traer datos del servidor usamos pull

Para traer datos del servidor usamos pull

git pull <origen> <rama>

Recordar e origin en la fuente remota, la cual podemos tener varias fuentes con diferentes nombre y main va a ser la rama que vamos a subir

Clonar un repositorio

Primero copiemos el URL de nuestro repositorio a clonar

git clone <url>

Aprende más en mi Blog