
Git
1. ¿Qué es?
Git es una herramienta o programa que sirve para tener un control de las distintas versiones de un proyecto. Git es capaz de saber qué se ha cambiado de una versión a otra, quién lo ha hecho y cuando se ha hecho.
2. Conceptos básicos
Git tiene una parte local, en nuestro ordenador, y una parte remota, donde se guarda online el proyecto para que otras personas puedan trabajar con él. La parte remota puede ser un servidor privado o servidores conocidos como Github, Gitlab, Bitbucket.
Por defecto, nuestro proyecto va a estar en el área/estado «Working Directory o Workspace». Cuando hacemos modificaciones a los archivos y ya queramos crear una versión del proyecto tendremos que «mandar» esos archivos al área/estado «Stage o Staging». Luego con el comando git commit se guardará la versión para el área/estado actual de esos archivos. Esta información se guarda en el área/estado «Local repository». Sólo cuando se ejecute git push se mandará todas las versiones o commits al repositorio remoto.


3. Instalar Git
Click aquí para ir a la web y elegir arriba el sistema operativo que usas. Una vez instalado y si estamos en Windows, abriremos la apliación Git Bash y escribiremos git –version para ver su versión y si está bien instalado.
Necesitaremos guardar nuestro email y nombre de usuario para poder hacer commits.
Escribiremos:
git config –global user.email «miemail@example.com»
git config –global user.name «mi nombre»
Si solo queremos cambiar los datos para un repositorio local en particular cambiaremos el –global por –local .
4. Comandos básicos
Iniciar Git en el directorio actual
git init
Clonar repositorio de servidor a local
git clone http://url
Saber si hay cambios en local en los archivos con respecto al último commit
git status
Añadir los archivos modificados al área Staging
git add -A o git add –all
git add . ( para los cambios en el directorio actual )
git add * ( solo los archivos nuevos y modificados, no los eliminados )
Quitar los archivos del área Staging y devolverlos al Working directory
git reset
git reset –hard ( para recuperar también los archivos borrados )
Guardar una versión o hacer una snapshot del proyecto
git commit -m «nombre del commit»
Volver a un estado anterior al último commit
git reset HEAD~
Eliminar un archivo y añadirlo al área Staging
git rm nombre-archivo
git rm -f nombre-archivo ( para borrarlo cuando ha sido modificado después de un commit )
git rm –cached nombre-archivo ( borra el archivo del área Staging y se queda en el Working directory )
git rm -r carpeta ( borra recursivamente la carpeta y sus hijos )
Ver los commits o versiones realizados
git log
git log –oneline
Ver las ramas o branch
git branch ( el * señala en qué rama estamos actualmente )
Crear una nueva rama o branch
git branch nombre-de-la-rama
Cambiar a una rama
git checkout nombre-de-la-rama
Unir una rama o branch a otra
git merge rama-a-unir -m «nombre del commit»
Resolver un conflicto al unir
Cuando se hace un merge y hay conflicto, abrimos los archivos problemáticos y solucionaremos el problema. Luego se ejecuta git add nombre-archivo y git commit -m «nombre commit»
Cambiar a un commit
git checkout id-del-commit
Comparar entre 2 commits
git diff id-commit-1 id-commit-2
Enviar el commit al servidor online
git push origin main ( origin es el online y main es el local )
Traer el último commit online a local
git fetch ( trae el commit pero no lo puedes ver a no ser que haga git merge justo después )
git pull ( trael el commit y le hace merge automaticamente )
Devolver un archivo/carpeta al estado del último commit
git restore nombre-archivo
git restore nombre-carpeta
git restore . ( todos los archivos al último commit y se pierden las modificaciones )
git restore –staged . ( no se pierden las modificaciones )
Guardar un momento dado sin hacer commit para moverse a otra rama y luego poder volver
git stash
git stash pop ( recupera los cambios del stash y elimina el stash de la pila )
git stash apply ( recupera los cambios del stash pero no elimina el stash de la pila )
Mostrar la lista de stash y recuperar uno en concreto
git stash list
git stash pop stash@{0}
git stash apply stash@{0}
Borrar un stash
git stash drop
Crear un nuevo commit para revertir el último
git revert id-commit
Borrar todos los commits posteriores a uno en concreto
git reset
Actualizar tu rama con los cambios de otra
git rebase nombre-rama ( no es aconsejable, avisar al equipo )
Borrar una rama
git branch -d nombre-de-la-rama
git branch -D nombre-de-la-rama ( fuerza el borrado )
Comando para crear ramas en remoto automáticamente
git config –global push.autoSetupRemote true