Git Cheat Sheet
Tags: github, git, spanish
Published: 2022-07-21 02:53:00

Comandos útiles que todo desarrollador debe conocer en git.

#**Índice**   
1. [Configuración básica](#id1) 
2. [Crear un nuevo repositorio](#id2)
3. [Ver el estado del repositorio](#id3)
4. [Añadir archivos del working directory al staging area](#id4)
5. [Añadir archivos del staging area al repositorio local](#id5)
6. [Ver un log de los commits](#id6)
7. [Resumir comandos usando alias](#id7)
8. [Diferencias entre archivos](#id8)
9. [Mandar un archivo del staging area al working diretory](#id9)
10. [Revertir los cambios de un archivo](#id10)
11. [Corregir el mensaje del último commit](#id11)
12. [Añadir archivos al staging area y hacer el commit en un solo paso](#id12)
13. [Regresar del Repositorio Local al Staging Area (conservando el Working Directory)] (#id13)
14. [Regresar del Repositorio Local al Working Directory (perdiendo el Working Directory)](#id14)
15. [Agregar cambios al último commit hecho](#id15)
16. [Borrar una rama remota](#id16)
17. [Viajar a un commit específico](#id17)
18. [Regresar al primer commit](#id18)
19. [Crear un tag](#id19)
20. [Listar todos los tags](#id20)
21. [Mostrar mas info de un tag en concreto](#id21)
22. [Mandar tags al remoto](#id22)
23. [Borrar un tag local](#id23)
24. [Borrar un tag remoto](#id24)
25. [Listar los repos remotos](#id25)
26. [Agregar un repo remoto](#id26)
27. [Crear un stash](#id27)
28. [Listar los stash](#id28)
29. [Eliminar el último stash y recuperar código](#id29)
30. [Recuperar el código sin eliminar el stash](#id30)
31. [Eliminar un stash](#id31)
32. [Eliminar todos los archivos no trakeados del repo](#id32)
33. [Buscar coincidencias en archivos](#id33)
34. [Miselaneos de comandos colaborativos](#id34)
35. [Visualizar ramas](#id35)
36. [GUI nativa de git](#id36)
37. [Inicializar un proyecto con git y la rama main por defecto](#id37)
38. [Muestra los cambios que se hicieron de los 2 últimos commits](#id38)
39. [Editar el contenido del último commit en el mismo commit sin cambiar el mensaje](#id38)

---

## **1. Configuración básica** <a name="id1"><a/>
### **Username e email**
```js
//username
git config --global user.name "Nombre de usuario"
//email
git config --global user.email "tu_email@gmail.com"
```
> Ambos comandos solo se ejecutan una vez. 

### **Visualizar las configuraciones**
```js
git config --global -l
```

## **2. Crear un nuevo repositorio** <a name="id2"><a/>
```js
git init
```

## **3. Ver el estado del repositorio** <a name="id3"><a/>
```js
git status
// git status resumido:
git status -s o git status --short
```

## **4. Añadir archivos del working directory al staging area** <a name="id4"><a/>

```js
//añadir archivos espefificos
git add <Nombre del archivo>
//añadir todos los archivos de la carpeta actual
git add .
git add -A
//añadir todos los archivos que tengan la misma extensión
git add *.png // añade todas las imagenes con extensión .png
//agrega toda una carpeta
git add Nombre-carpeta/
```

## **5. Añadir archivos del staging area al repositorio local** <a name="id5"><a/>
```js
git commit -m "Mensaje del commit"
```

## **6. Ver un log de los commits** <a name="id6"><a/>
```js
// ver toda la información del log
git log
// ver los TODOS los logs en una sola linea
git log --oneline --decorate --all --graph
```

## **7. Resumir comandos usando alias** <a name="id7"><a/>
```js
//para git log:
git config --global alias.lg "log --oneline --decorate --all --graph"
//ahora ejecutamos:
git lg

//para git status:
git config --global alias.s "status -s -b"
//ahora ejecutamos:
git s

//para git branch:
git config --global alias.br "branch"
//ahora ejecutamos:
git br

//para cambiar de ramas:
git config --global alias.sw "switch"
//ahora ejecutamos:
git sw

//para borrar una rama:
git config --global alias.delete-br "branch -d"
//ahora ejecutamos:
git delete-br

//para regresar al working directory desde el staging area:
git config --global alias.unstaged "restore --staged ."
//ahora ejecutamos:
git unstaged

//para hacer un reset --soft
git config --global alias.soft "reset --soft HEAD~1"
//ahora ejecutamos:
git soft

//para hacer un reset --hard
git config --global alias.hard "reset --hard HEAD~1"
//ahora ejecutamos:
git hard
```

## **8. Direfencias entre archivos** <a name="id8"><a/>
### Si el archivo esta en el working directory

```js
git diff
```

### Si el archivo esta en el staging area

```js
//verifica todos los archivos que esten el el stage
git diff --staged
```


## **9. Mandar un archivo del staging area al working diretory** <a name="id9"><a/>

```js
// vieja manera:
git reset HEAD <Nombre-del-archivo>

// nueva forma y recomendable usar:
git restore --staged <Nombre-del-archivo>
```

## **10. Revertir los cambios de un archivo** <a name="id10"><a/>
```js
git checkout -- <Nombre-del-archivo>
```

## **11. Corregir el mensaje del último commit** <a name="id11"><a/>
```js
git commit --amend -m "Nuevo mensaje del commit"
```

## **12. Añadir archivos al staging area y hacer el commit en un solo paso** <a name="id12"><a/>

```js
//En vez de esto:
git add .
git commit -m "Mensaje commit"
// Puedes hacer esto:
git commit -am "Mensaje commit"
```

> **OJO!**, solo sirve para archivos modificados, no funciona para archivos nuevos.

## **13. Regresar del Repositorio Local al Staging Area (conservando el Working Directory)** <a name="id13"><a/>

```js
// al último commit
git reset --soft HEAD~1

// a cualquier commit
git reset --soft <Hash-del-commit>
```

> _Al regresar a cualquier commit, todos los commits que estaban después del punto de regreso se pierden, pero el código se mantiene intacto._

## **14. Regresar del Repositorio Local al Working Directory (perdiendo el Working Directory)** <a name="id14"><a/>


```js
// al último commit
git reset --hard HEAD~1

// a cualquier commit
git reset --hard <Hash-del-commit>
```

> _Al regresar a cualquier commit, todos los commits que estaban después del punto de regreso se pierden, pero el código se mantiene intacto._

## **15. Agregar cambios al último commit hecho** <a name="id15"><a/>

```js
git add <Nombre-del-Archivo>
git commit --amend -m "Mensaje del commit"
```

## **16. Borrar una rama remota** <a name="id16"><a/>

```js
git push <remote> --delete <branch>
//ejemplo: git push origin --delete test 
```

## **17. Viajar a un commit específico** <a name="id17"><a/>

```js
git checkout <hash-commit>
```

## **18. Regresar al primer commit** <a name="id18"><a/>

```js
#1:
git checkout master 
#2:
git checkout <hash-ultimo-commit>
```

## **19. Crear un tag** <a name="id19"><a/>

```js
git tag -a [version] -m "Mensaje" [hash]
//ej:
git tag -a v0.0.1 -m "landing page funcional" ab256w1
```

## **20. Listar todos los tags** <a name="id20"><a/>

```js
git tag
```

## **21. Mostrar mas info de un tag en concreto** <a name="id21"><a/>

```js
git show [nombre-tag]
```

## **22. Mandar tags al remoto** <a name="id22"><a/>

```js
git push origin [nombre-tag] // manda solo un tag
git push origin --tags // manda todos los tags que hayan
```

## **23. Borrar un tag local** <a name="id23"><a/>

```js
git tag -d [nombre-tag]
```

## **24. Borrar un tag remoto** <a name="id24"><a/>

```js
git tag push origin :refs/tags/[nombre-tag]
```

## **25. Listar los repos remotos** <a name="id25"><a/>

```js
git remote -v
```

## **26. Agregar un nuevo repo remoto** <a name="id26"><a/>

```js
git remote add [nombre-del-remoto] [url-del-remoto]
//ej:
git remote add upstream https://github.com/PlatziLabs/jshero-challenges.git
```

## **27. Crear un stash** <a name="id27"><a/>
```js
git stash
//o
git stash save "mensaje"
```

## **28. Listar los stash** <a name="id28"><a/>
```js
git stash list
```

## **29. Eliminar el último stash y recuperar código** <a name="id29"><a/>
```js
git stash pop
```

## **30. Recuperar el código sin eliminar el stash** <a name="id30"><a/>
```js
git stash apply
```

## **31. Eliminar un stash** <a name="id31"><a/>
```js
git stash drop stash@{#id}
```

## **32. Eliminar todos los archivos no trakeados del repo** <a name="id32"><a/>
```js
//muestra todos los archivos que eliminara
git clean --dry-run
//elimina los archivos
git clean -f 

//ojo solo elimina archivos, no carpetas
```

## **33. Buscar coincidencias en archivos** <a name="id33"><a/>
```js
// git grep
// En que líneas de codigo existe una palabra "Pedro"
git grep -n Pedro

// Cuantas veces uso la palabra "Sol"
git grep -c Sol
```

## **34. Miselaneos de comandos colaborativos** <a name="id34"><a/>
```js
// ver todos los commits de los miembros del repo
git shortlog -sn --all --no-merges

// ver quien hizo que cambios
git blame -c [archivo]

// ver quien hizo que cambios limitando el numero de lineas
git blame -c [archivo] -L35,60 
```

## **35. Visualizar ramas** <a name="id35"><a/>
```js
// ver todas las ramas (remotas y locales)
git branch -a

// ver las ramas remotas
git branch -r
```

## **36. GUI nativa de git** <a name="id36"><a/>
```js
gitk
```

## **37. Inicializar un proyecto con git y la rama main por defecto** <a name="id37"><a/>
```js
//cualquiera de los dos
git init -b main
git init --initial-branch=main
```

## **38. Muestra los cambios que se hicieron de los 2 últimos commits** <a name="id38"><a/>
```js
git diff HEAD^ 
```

## **39. Editar el contenido del último commit en el mismo commit sin cambiar el mensaje** <a name="id39"><a/>
```js
git commit --amend --no-edit
```


---

Quiza esto sea de tu interés:

{% link https://dev.to/duxtech/adios-fontawesome-hola-tabler-icons-1625 %}

{% link https://dev.to/duxtech/3-metodos-muy-utiles-para-objetos-en-javascript-1lk8 %}

{% link https://dev.to/duxtech/las-mejores-guias-completas-para-flexbox-y-cssgrid-1ib3 %}

---

![img](https://media.giphy.com/media/112Fjas8rghItO/giphy.gif)