| Both sides previous revisionPrevious revisionNext revision | Previous revision | 
| cheat_sheet_chuleta_de_git_para_sysadmins [2022/08/04 15:32]  – [Ramas y etiquetas]  busindre | cheat_sheet_chuleta_de_git_para_sysadmins [2024/05/28 21:09] (current)  – [Ramas y etiquetas]  busindre | 
|---|
| git log --follow -p -- <fichero>    # Lista commits y cambios sobre un fichero concreto. | git log --follow -p -- <fichero>    # Lista commits y cambios sobre un fichero concreto. | 
|  |  | 
| git show <commit>                                      # Muestra los ficheros editados y sus cambios en un determinado commit. | git show <commit1> <commit2>                           # Muestra los ficheros editados y sus cambios en uno o varios commits. | 
| git diff-tree --no-commit-id --name-only -r <commit>   # Muestra únicamente qué ficheros fueron modificados en un commit (Opción 1). | git diff-tree --no-commit-id --name-only -r <commit>   # Muestra únicamente qué ficheros fueron modificados en un commit (Opción 1). | 
| git show --pretty="" --name-only                       # Muestra únicamente qué ficheros fueron modificados en un commit (Opción 2). | git show --pretty="" --name-only                       # Muestra únicamente qué ficheros fueron modificados en un commit (Opción 2). | 
| <code bash> | <code bash> | 
| git branch -avv                   # Lista todas las ramas y algunos commits. | git branch -avv                   # Lista todas las ramas y algunos commits. | 
|  | git branch -r                     # Lista las ramas remotas (se puede usar con --merged y --no-merged) | 
|  | git branch --merged               # Lista las ramas que ya han sido fusionadas (normalmente candidatas para ser eliminadas). | 
|  | git branch --no-merged            # Lista ramas todavía pendientes de ser fusionadas. | 
|  |  | 
| git branch <rama>                 # Crea una rama. Esto es siempre a partir de la rama donde se esté trabajando, es decir, master u otra rama. | git branch <rama>                 # Crea una rama. Esto es siempre a partir de la rama donde se esté trabajando, es decir, master u otra rama. | 
| git checkout <rama>               # Cambiar de rama = Cambiar el puntero HEAD. / Si se usa "-" se va a la rama anterior. | git checkout <rama>               # Cambiar de rama = Cambiar el puntero HEAD. / Si se usa "-" se va a la rama anterior. | 
| git checkout -b <rama>            # Crea una rama y cambia a la rama creada, equivale a los dos comandos anteriores. | git checkout -b <rama>            # Crea una rama y cambia a la rama creada, equivale a los dos comandos anteriores. | 
|  |  | 
| git branch -d <rama>              # Borrar una rama local que haya sido fusionada. | git branch -d <rama>              # Borrar una o varias ramas locales que haya sido fusionada. De haber sido fusionada la rama mostrará un error. | 
| git branch -d <rama>              # Borrar una rama local aunque no haya sido fusionada. | git branch -D <rama>              # Borrar una o varias ramas local aunque no haya sido fusionada. | 
| git branch -d `git branch --merged | grep -v \* | xargs`   # Borrar todas las ramas en local (-d o -D segun se necesite). | git branch -d `git branch --merged | grep -v \* | xargs`   # Borrar todas las ramas en local (-d o -D según se necesite). | 
|  |  | 
| git push origin --delete <rama>   # Borrar una rama en nuestro repositorio remoto. | git push origin --delete <rama>   # Borrar una rama en nuestro repositorio remoto. | 
|  |  | 
| git show <rama>:<fichero>   # Muestra el contenido de un fichero de otra rama. | git show <rama>:<fichero>   # Muestra el contenido de un fichero de otra rama. | 
|  | </code> | 
|  |  | 
|  | Eliminar varias ramas de forma simultanea | 
|  | <code bash> | 
|  | # Borra todas las tamas locales ya fusionadas excluyendo master y XXX. | 
|  | git branch --merged | grep -Ev "(^\*|master|XXX)" | xargs git branch -d | 
|  |  | 
|  | # Elimina  todas las ramas remotas que hayan sido fusionadas (Usar -D para todas las ramas remotas, estén o no fusionadas) a excepcion de master y XXXX. | 
|  | git branch -r --merged | grep -Ev "(^\*|master|XXX)" | sed 's/origin\///' | xargs -n 1 git push origin --delete | 
|  |  | 
|  | # Listar y borrar ramas locales que hayan sido eliminadas en el remoto. "<remote>" suele referenciar a "origin" si no se ha cambiado el nombre del repositorio remoto. | 
|  | git remote prune <remote> --dry-run # Lista | 
|  | git remote prune <remote> # Borra | 
| </code> | </code> | 
|  |  | 
| #  Se busca el commit perteneciente a la Pull request, por ejemplo 0ef16eb1370 y se le indica a git que debe coger ese commit. | #  Se busca el commit perteneciente a la Pull request, por ejemplo 0ef16eb1370 y se le indica a git que debe coger ese commit. | 
| git cherry-pick 0ef16eb1370</code> | git cherry-pick 0ef16eb1370</code> | 
| ===== Deshacer acciones ===== | ===== Deshacer / Rehacer acciones ===== | 
|  |  | 
| <code bash>git reset --hard HEAD      # Deshace todos los cambios locales. | <code bash>git reset --hard HEAD      # Deshace todos los cambios locales. | 
| git checkout <commit> -- file1 file2  # Restaura los ficheros al estado que tenían en un determinado commit. | git checkout <commit> -- file1 file2  # Restaura los ficheros al estado que tenían en un determinado commit. | 
| git reset <commit> <file>             # Restaura un fichero al estado que tenía en un determinado commit (Lo mismo que el anterior). | git reset <commit> <file>             # Restaura un fichero al estado que tenía en un determinado commit (Lo mismo que el anterior). | 
|  | git restore --staged  file1 file2     # Para poder usar git diff y ver los cambios realizados al restaurar los ficheros. | 
|  |  | 
|  |  | 
| # NOTA: En la sección "Historial de commits y búsquedas" se muestra como ver las diferencias de ficheros entre commits. | # NOTA: En la sección "Historial de commits y búsquedas" se muestra como ver las diferencias de ficheros entre commits. |