domingo, 20 de ago. de 2023
Conceptos avanzados de Git y GitHub
git reset
Borra commits de la historia de un repositorio. Nos permite volver a un commit anterior.
-
git reset --hard hash: Borra todos los commits posteriores al commit con el hash indicado incluido el staging area.
-
git reset --soft hash: Borra todos los commits posteriores al commit con el hash indicado,manteniendo el staging area.
-
git reset --hard HEAD~1: Borra el último commit incluido el staging area.
-
git reset --soft HEAD~1: Borra el último commit manteniendo el staging area.
-
git reset HEAD: Borra todos los archivos del staging area.
-
git reset --hard HEAD: Borra los cambios y el staging area y lo deja como estaba el último commit.
git rm
Elimina archivos del staging area y del directorio de trabajo.
- --cached: Elimina archivos del staging area y del repositorio local. Basicamente deja de trackear el archivo.
- --force: Elimina archivos del staging area y del disco duro. Basicamente elimina el archivo.
- -r: Elimina archivos de forma recursiva.
git checkout
Cambia de rama o cambiar el estado de un archivo.
- git checkout hash hello.html: Cambia el estado del archivo hello.html al commit con el hash indicado. Si se hace un commit después de esto, se crea un nuevo commit con el estado del archivo hello.html del commit con el hash indicado.
- git checkout head hello.html: Cambia el estado del archivo hello.html al último commit.
- git checkout -- .: Deja el directorio de trabajo como estaba el último commit.
branch
Es una linea de desarrollo independiente de un proyecto.
✅ main es el nombre por defecto de la rama principal de un proyecto.
- git branch: Muestra las ramas existentes.
- git branch -r: Muestra las ramas remotas.
- git branch -a: Muestra todas las ramas.
- git branch nombre: Crea una rama con el nombre indicado.
- git checkout nombre: Cambia a la rama con el nombre indicado.
- git checkout -b nombre: Crea una rama con el nombre indicado y cambia a esa rama.
- git branch -d nombre: Elimina la rama con el nombre indicado.
merge
Es la acción de combinar dos ramas.
- git merge nombre: Combina la rama actual con la rama con el nombre indicado.
git rebase
Esta acción permite mover una rama a otra rama. Es decir, combina dos ramas de manera lineal.
✅ primero se hace un rebase a la rama que se quiere mover y luego se hace un merge a la rama a la que se quiere mover.
- git rebase nombre: Mueve la rama actual a la rama con el nombre indicado.
git stash
Guarda los cambios en un stash y los elimina del staging area y del directorio de trabajo.
- git stash: Guarda los cambios en un stash.
- git stash pop: Recupera los cambios del stash y los elimina del stash.
- git stash list: Muestra los stash existentes.
- git stash apply: Recupera los cambios del stash.
- git stash drop: Elimina el stash.
- git stash clear: Elimina todos los stash.
- git stash branch nombre: Crea una rama con el nombre indicado y recupera los cambios del stash.
git clean
Elimina los archivos que no están trackeados por git.
- git clean -f: Elimina los archivos que no están trackeados por git.
- git clean -f -d: Elimina los archivos que no están trackeados por git y los directorios vacíos.
- git clean -f -d -x: Elimina los archivos que no están trackeados por git y los directorios vacíos y los archivos ignorados por git.
- git clean --dry-run: Muestra los archivos que serán eliminados.
git cherry-pick
Permite traer un commit de otra rama a la rama actual.
- git cherry-pick hash: Trae el commit con el hash indicado a la rama actual.
git reflog
Muestra la historia de los commits de un repositorio. Nos permite volver a un commit anterior incluso si ya se hizo un reset.
- git reflog: Muestra la historia de los commits de un repositorio.
- git reflog hash: Muestra la historia de los commits de un repositorio hasta
git --amend
Permite modificar el último commit. Es decir, permite modificar el mensaje del último commit o agregar modificaciones al último commit.
- git commit --amend -m "mensaje": Modifica el mensaje del último commit.
- git commit --amend -m "mensaje" --no-edit: Modifica el mensaje del último commit y no abre el editor de texto.
- git commit --amend --no-edit: Agrega los cambios al último commit y no abre el editor de texto.
git grep
Busca un texto en todos los archivos de un repositorio.
- git grep "texto": Busca el texto indicado en todos los archivos de un repositorio.
- git grep -n "texto": Busca el texto indicado en todos los archivos de un repositorio y muestra el número de la línea donde se encuentra el texto.
- git grep -c "texto": Busca el texto indicado en todos los archivos de un repositorio y muestra la cantidad de veces que se encuentra el texto.
git restore
Remueve cambios
- git restore archivo : Restablece el archivo y deja como el último commit.
- git restore --staged archivo : Quita el archivo del staging area.