Guía de GIT

Es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código.

Ventajas

✔️ Mejor trabajo en equipo
✔️ Control de los cambios en el proyecto
✔️ Auditoria y fiabilidad
✔️ Volver a versiones anteriores
 ▪️ ▪️ ▪️ y mucho más

Descargar: https://git-scm.com
Guía en inglés: https://github.com/germancutraro/Git-Command-Guide

Donde escribir los comandos: terminal del sistema en el Git Bash

Detalles de la guía:

Todos los comandos estarán en bloque de código. Todo lo que esté en negrita significa que el valor es relativo, cambia según cada uno.

Comandos: 🚀

Versión de GIT: 🕵

git --version

Configurar nombre:

git config --global user.name "germancutraro"

Configurar E-mail: ✉️

git config — global user.email “germancutraro@hotmail.com”

Comando de Ayuda: 🙏

git help  

Ayuda sobre un comando en específico: 👏

git help commit

Crear un repositorio: 👊

git init

Agregar un archivo al repositorio: 👉

git add index.html

Agregar múltiples archivos: 🖖

git add index.html index.js

Agregar todos los archivos: 💥

git add .

Agregar todos los archivos del directorio actual por su extensión : 🌕

git add *.txt

Agregar todos los archivos que se encuentren en una carpeta: 📁

git add css/

Agregar todos los archivos que fueron modificados: 〽️

git add -u

Agregar todos los archivos por su extensión que se encuentren dentro de una carpeta: 📂

git add pdfs/*.pdf

Ver los archivos modificados: 🔦

git status

Ver los archivos modificados sin tanta información: 🤐

git status -s 

Ver los archivos modificados y en que rama estamos trabajando: 🔆

git status -sb

Excluir un archivo de la lista de agregados: ⛔️

git reset index.js

Excluir un archivo de la lista de agregados por su extensión:

git reset *.xml

Crear un registro histórico de los cambios realizados: 📝

git commit -m 'Agregamos el menú'

Ver todos los commits realizados: 👀

git log

Ver todos los commits realizados de una forma mas bonita: 🌲

git log --oneline --decorate --all --graph

Podemos crear un alias/shortcut para no escribir el comando previo que es realmente extenso! 💧

git config --global alias.lg "log --oneline --decorate --all --graph"

Entonces ya podemos hacer: 👆

git lg

Para ver la información del archivo de configuraciones: 📘

git config --global -l
Imagina que tenemos un repositorio con dos archivos: index.html e index.js. En este caso solo modificamos el archivo index.html:

Ver todas las modificaciones que han sucedido entre el commit anterior y la actualidad: 📍

git diff

Ver todos los archivos que estén en el Staged (git add -> Staged):

git diff --staged

Recuperar archivos: 💞

git checkout .

Deshacer todos los cambios agregados previamente en un archivo: 📄

git checkout -- README.md

Agregar al staged y hacer el commit en un solo comando: 🌟

git commit -am 'README actualizado'

Modificar el mensaje del commit: ✏️

git commit --amend -m 'Actualizamos el mensaje!'

Agregar/Volver al último commit: ↶

git reset --soft HEAD^

Regresar a un punto/commit en específico de una forma débil: ↖️

git reset --soft 39ae8e6

Regresar a un punto en especifico de una forma contundente: ⬅️

git reset --hard 39ae8e6
Ahora bien, ¿qué pasa si nos equivocamos y volvemos a un repositorio borrando todo el trabajo actual? Bueno, git nos salva de eso:

Lista de commits originados: 📋

git reflog

Volver a un punto: 🔄

git reset --hard 43809d4
Imagínese que tenemos un archivo cuyo nombre es: index.js y queremos renombrarlo por app.js, git también se ocupa de eso:

Renombrar archivos: ✍️

git mv index.js app.js

Eliminar archivos:

git rm app.js
Una rama (branch) es basicamente una nueva linea de tiempo que almacena commits. Son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama por defecto cuando creas un repositorio. Crea nuevas ramas durante el desarrollo y fusiónalas a la rama principal cuando termines.

Crear un branch: 🔱

git branch miRama

Ver las ramas de nuestro repositorio: 🔅

git branch

Pasar a trabajar en una rama en especifica: 🌿

git checkout miRama

Crear y moverse a una rama en un solo comando: 🍀

git checkout -b miRama

Si ahora hacemos un git branch podemos ver como cambiamos de branch:

Unir ramas: merging

Primero pasamos nuevamente a la rama master: ❄️

git checkout master

Y ahora ejecutamos el siguiente comando: 🌻

git merge miRama

Una vez fusionadas podemos proceder a borrar la rama: 🌹

git branch -d miRama

Tags:

Crear tag: 💅🏼

git tag -a v1.0.0 -m "Versión 1.0.0"

Insertar un tag en un commit en específico: 🔖

git tag -a v0.1.0 43809d4 -m 'Version Alfa'

Ver los tags: 🎌

git tag

Ver el mensaje de un tag: 👁‍🗨

git show v1.0.0

Eliminar un tag: ✖️

git tag -d v0.1.0
Stash: Es como un contenedor en el cual podemos almacenar todos los cambios temporales para dejarlo en un determinado punto.

Crear un stash: 📦

git stash

Ver los stashs: 💼

git stash list

Github:

Es una plataforma de desarrollo colaborativo de software para alojar proyectos utilizando el sistema de control de versiones Git.
Página oficial: https://github.com
Mi cuenta: https://github.com/germancutraro

Una vez que creamos un repositorio, debemos añadirlo como servidor remoto: 📮

git remote add origin tuRepositorio.git

Ver las fuentes remotas de nuestro repositorio:

git remove -v

Una vez que tengamos todos nuestros commits realizados y hayamos agregado el repositorio remoto podemos subir nuestros archivos a Github:

Push a github: ✈️

git push -u origin master

Como puedes ver no se suben los tags con el git push:

tags del repositorio

Subir los tags: ▶️

git push --tags 

Ignorar archuivos y carpetas: ❗️

Crear archivo .gitignore: en él escribiremos el nombre de archivos y carpetas que no queremos que se tengan en cuenta a la hora de subir nuestro repositorio a Github.

Actualizar/Bajar nuestro repositorio de Github: 🌌

git pull

Clonar un repositorio:

git clone tuRepositorio.git

Clonar un repositorio en una carpeta en específica: 📁

git clone tuRepositorio.git proyecto-final

No es una guía terminada!

Seguime en Github: https://github.com/germancutraro

Muchas Gracias!