Comandos esenciales de Git

Anderson Pozo
11 de febrero de 2022
15 min.
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