Comandos esenciales de Git

Date published: 11-Feb-2022
1 min read / 41 words
Autor: Anderson Pozo

Git
GitHub
repositorios

Índice

  1. Configuración
  2. Comandos básicos
  3. Historial de cambios
  4. Ramas
  5. Repositorios remotos
  6. Etiquetas
  7. Git stash
  8. Git reset y revert
  9. Git bisect
  10. Recuperar commits

Configuración


# Editar configuracion del repositorio
git config --edit
# Configurar email del usuario
git config --global user.email "email"
# Configurar nombre del usuario
git config --global user.name "nombre"
# Ver informacion del usuario
git config --global -l
# Indicar alias de un comando
git config --global alias.l "log"
# Editar configuracion global de usuario
git config --global --edit
[alias]
st = status
[credential]
interactive = never | always

Comandos básicos


# Documentacion de comandos
git help
# Inicializar un repositorio de git
git init
# Pasar un archivo específico al staging area
git add <file>
# Pasar todos los archivos al staging area
git add .
# Pasar solo los archivos con la extension especificada
git *.css
# Pasar los ficheros de staging area a repository (Después de esto se abre el editor de código en donde se escribe un comentario)
git commit
# Realizar un commit y le agrega un comentario
git commit -m "comentario"
# Agregar al stage area y hace el commit cuando sea modificado el archivo, NO creado
git commit -am "comentario"
# Permite rectificar el mensaje de commit
git commit --amend -m "nuevo_comentario"
# Guarda los cambios en el ultimo commit realizado
git commit --amend --no-edit
# Ver en que status están los ficheros
git status
# Ver las diferencias hechas en los archivos
git diff <file>
git diff
# Cambiar el nombre de un archivo
git mv nombre_archivo nuevo_nombre
# Borrar un archivo
git rm nombre_archivo
# Revertir los cambios de un archivo
git checkout -- <file>
# Revertir todos los cambios
git checkout .

Historial de cambios


# Ver historial de commits
git log
# Buscar los commits por nombre
git log -i --grep "string_busqueda"
# Ver historial en modo gráfico
git log --graph --abbrev-commit --oneline
# Forma resumida de ver la ubicacion de las ramas
git log --oneline --decorate --all --graph
# Muestra el commit y el autor de cada linea del fichero
git blame nombre_fichero
# Ver el historial completo de cambios
git reflog

Ramas


# Listar las ramas que hay ("main" es la rama default)
git branch
# Crear una nueva rama
git branch nombre_rama
# Borrar rama
git branch -d nombre_rama
# Renombrar rama master a main
git branch -M main
# Listar todas las ramas(local y remota)
git branch -a
# Listar las ramas remotas
* git branch -r
# Crear la rama y moverse directamente a ella
git checkout -b nombre_rama
# Ir a una rama en especifico
git checkout nombre_rama
# Unir ramas, se debe estar en la rama en la que se desea hacer el merge
git merge nombre_rama
# Reescribir en la línea de tiempo (alternativa a merge)
git rebase nombre_rama
# Reescribir varios commits a la vez
git rebase -i HEAD~3
# Trae SOLO el ultimo commit a la rama principal
git cherry-pick numero_commit

Repositorios remotos


# Clonar repositorio desde GitHub a local
git clone https://github.com/usuario/repo
# Agregar rama remota
git remote add origin https://github.com/usuario/repo
# Subir los ficheros a Github
git push
git push -u origin main
# Traer los commits desde Github
git pull
# Traer los cambios desde el repo remoto y los une
git fetch origin master
# Traer los cambios y ramas nuevas que se han creado en remoto
git fetch origin
# Limpia todas las referencias de ramas que ya no existan
git fetch -ap
# Crear rama develop en el repositorio remoto
git push --set-upstream origin develop
# Listar ramas de repositorio remoto
git remove -v
# Trae actualizaciones de un repositorio forked
git add remote upstream
# Borra destino de repositorio remoto
git remote rm origin

Etiquetas


# Crear una nueva etiqueta
git tag nombre_etiqueta(v0.0.1)
# Etiquetar a un commit en especifico
git tag tag_name numero_commit
# Eliminar una etiqueta
git tag -d nombre_etiqueta
# Poner mensajes a la etiqueta (ejem. git tag -a v1.0.0 -m "Version inicial")
git tag -a nombre_version -m "mensaje"
# Mostrar los cambios y archivos del ultimo commit etiquetado
git show nombre_etiqueta
# Etiquetar commit anterior a version inicial
git tag -a Nombre_version codigo_commit -m "mensaje"
# Enviar al servidor remoto la etiqueta
git push origin nombre_etiqueta
# Enviar al servidor remoto todas las etiquetas
git push origin --tags

Git stash


# Pasar al stash archivos que no están en el staging area
git stash -u
#Agregar los archivos al staging area para luego hacer el stash
git add -A
# Guardar cambios de manera temporal
git stash
# Listar cambios temporales
git stash list
# Sacar de la lista del stash al staging area
git stash pop
# Sacar del stash un add por por posición
git stash pop 1

Git reset y revert


# Quita el archivo del stage area
git reset <file>
# Quita un commit del repositorio
git reset --mixed numero_commit
# Permite moverse entre versiones del codigo
git reset --soft numero_commit
# Permite recuperar los archivos de una version especifica
git reset --hard numero_commit
# Deshace el último commit sin crear uno nuevo
git reset HEAD~1 --mixed
# Borrar el commit
git revert numero_commit
# Revierte el ultimo commit
git revert @
# Revierte el commit 4 en el historial
git revert HEAD~4

Git bisect


# Realiza una busqueda binaria para inspeccionar los commits en busca de bugs
git bisect start commit_inicio commit_final
# Etiqueta a un commit como bueno
git bisect good
# Etiqueta a un commit como malo o que contiene un bug
git bisect bad
# Sale del modo de inspección de bisect
git bisect reset
# Cerrar un issue con un commit
commit fixes #2

Recuperar commits


cat .git/logs/refs/heads/master
# Identificar el numero del commit
git reset --hard id_commit_recuperar
# Listar los cambios que se han hecho sin haber hecho el commit, es decir solo agregado al staging area
# !Identificar el número del blob
git fsck --unreachable --no-reflogs
# Mostrar el contenido del fichero perdido, mas no todo el directorio
git cat-file -p numero_blob


Anderson Pozo © 2020 | Hecho en