Course of git follow Fernando Herrera´s course in DevTalles
git --version # Ver la versión de git
git help # Ver comandos ayuda
git commit # Hacer commit
git --help config # Ver comandos ayuda de config
git config --global user.name "John Doope" # Asignar nombre del usuario global
git config --global user.username "johndoope" # Asignar nombre de usuario global
git config --global user.email "johndoope@gmail.com" # Asignar email de usuario global
git config --global -e # Ver configuraciones globales
git config -e # Ver configuraciones de proyecto
git config --global --unset user.name # Eliminar una configuracion global user.name
git init # Inicializar un repositorio
git status # Ver los archivos que tienen cambios
git status --short # Ver los archivos que tienen cambios forma corta
git add <name> # Agregar un archivo al stage
git commit -m "Coment" # Crear un commit con mensaje
git checkout -- . # Reconstruir el proyecto a como estaba antes
git brach # Listar las ramas
git branch <name> # Crear nombre de rama
git diff # Ver los cambios entre archivos
git diff --staged # Ver los cambios entre archivos en el stage
git commit -am "message" # Agregar un commit de forma abreviada (add message)
git commit --amend -m "message" # Reescribir el commit anterior o correguirlo
git reset --soft HEAD^ # Revertir el cambio anterior (ejem. ^2)
git commit --amend # Abre todo el editor para reescribir el commit
git commit --amend --date="AAAA-MM-DD HH:MM:SS" # Cambia la fecha de un commit
git reset --soft <65ed0b2> # Revertir el cambio anterior con HASH
git reset --mixed <769efb3> # Revertir el cambio anterior, no deja en el stage
git reset --hard <f710079> # Revertir el cambio anterior, destructivo
git reflog # Muestra todo el historial de commits
git mv destruir-mundo.md salvar-mundo.md # Renombrar archivo
git rm salvar-mundo.md # Eliminar archivo
git checkout <branch-name> # Cambiar de rama
git switch <branch-name> # Cambiar de rama
git branch -d <branch-name> # Eliminar rama
git branch -d <branch-name> -f # Eliminar rama forzadamente
git checkout -b <branch-name> -f # Crar rama y cambiar a rama inmediatamente
git tag <tag-name> # Crear una etiqueta
git tag # Listar las etiquetas
git tag -d <tag-name> # Eliminar una etiqueta
git tag -a <tag-name> -m "message" # Crear una etiqueta con annotate(-a)
git tag -a <tag-name> HASH -m "message" # Crear una etiqueta a un commit con el HASH
git show <tag-name> # Ver la informacion de un tag
git stash # Guardar cambios momentaneos
git stash list # Listar los cambios momentaneos
git stash pop # Recupera el ultimo stash y lo aplica
git stash apply stash@{0} # Recupera el stash con el id y NO lo borra
git stash drop stash@{0} # Elimina la posision 0 del stash
git stash show stash@{0} # Muestra la info del stash 0
git stash save "message" # Crear un stash con un nombre
git stash list --stat # Lista los stash con mas información
git stash clear # Limpia todos los stash
git rebase <branch-name> # Hacer rebase
git rebase -i HEAD~4 # Hacer rebase itereactivo 4 commits anteriores
git checkout -- <file-name> # Reconstruir el archivo como estaba antes
git rebase --continue # Continuar con el rebase interactivo
git rebase --abort # La rama se volverá al estado anterior a la rebase interactiva
Para eliminar parte del historial de commits en Git, puedes usar el comando git rebase -i con la opción --interactive para editar el historial de commits de manera interactiva. Luego, en el editor de texto que se abre, puedes marcar los commits que deseas eliminar con la opción drop, guardar y cerrar el editor. Finalmente, puedes forzar la actualización del historial con git push --force
git rebase -i HEAD~1 # Hacer rebase itereactivo 4 commits anteriores
git push --force # Forzar la actualización del historial
git remote add origin https://...... (git rao) # Conectar con repositorio github
git push -u origin main (git puom) # Hacer push a github
git remote add upstream https://...... (git rau) # Hacer referencia a otro repositorio Fork
git clone --depth=1 <repo> # Clonar un repositorio Git sin el historial de commits
git clone --branch <branchname> <remote-repo-url> # Clonar una rama especifica
git push --tags # Publicar todas las etiquetas
git fetch # Actualizar las referencias con el servidor git
git checkout HASH <file-name> # Revertir el cambio con el HASH de un archivo
git status -sb # Ver el estado de la rama
git status -short --branch # Ver el estado de la rama
git pull --all # Traer todo del repositorio
git push --all # Subir todo del repositorio
git branch --all # Ver todas las ramas del repositorio
git branch --a # Ver todas las ramas del repositorio
git push origin :<branch-name> # Eliminar la rama desde el origen
git remote prune origin # Revisa y actualiza las referencias de las ramas
git config --global alias.rebuild "checkout -- ."
co = checkout
lodag = log --oneline --decorate --all --graph
unstage = reset HEAD --
s = status
sw = switch
bsc = branch --show-current
rank = shortlog -sn --no-merges
alias = config --get-regexp ^alias\\.
b = branch
rv = remote -v
fo = fetch origin
pso = push origin
plo = pull origin
rb = checkout -- .
ss = status --short
ssb = status --short --branch
rbf = checkout --
ba = branch --all
rpo = remote prune origin
t = tag
ta = tag -a
pt = push --tags
ce = config -e
git branch -M master
git config --global init.defaultBranch main
git config --global user.signingkey <SSH_KEY_ID>
git config --global commit.gpgsign true
git log --show-signature # Verify all commits
git log --show-signature -1 # Verify last commit
🧩 PASO 1 — Ver si ya tienes llave SSH
En PowerShell o Git Bash:
ls ~/.ssh
Si ves algo como:
id_ed25519
id_ed25519.pub
👉 Ya tienes llave, salta al PASO 3
🧩 PASO 2 — Crear llave SSH (si no tienes)
ssh-keygen -t ed25519 -C "tu_email_de_github@correo.com"
Dale Enter a todo (Opcional: ponle passphrase)
🧩 PASO 3 — Subir la llave a GitHub
Copia tu llave pública:
cat ~/.ssh/id_ed25519.pub
Ve a: 👉 https://github.com/settings/keys
Haz clic en:
- New SSH Key
Y MUY IMPORTANTE:
- Title: Mi PC trabajo
- Key type: 🔽 Signing key
- Pega la llave
- Save
🧩 PASO 4 — Decirle a Git que firme con SSH
Configura esto:
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
🧩 PASO 5 — Arreglar tu commit actual
Firma el commit que ya existe:
git commit --amend --no-edit -S
🧩 PASO 6 — Push
git push --force-with-lease
1️⃣ Verifica que Git quedó configurado para firmar con SSH
Corre esto:
git config --global --get gpg.format
git config --global --get user.signingkey
git config --global --get commit.gpgsign
Debe salir algo así:
ssh
C:/Users/TU_USUARIO/.ssh/id_ed25519.pub
true
1️⃣ Arranca el ssh-agent
Ejecuta esto tal cual:
eval "$(ssh-agent -s)"
Deberías ver algo como:
Agent pid 1234
2️⃣ Agrega tu llave SSH
ssh-add ~/.ssh/id_ed25519
Si te pide passphrase → ponla Si no da error → perfecto
3️⃣ Verifica que quedó cargada
ssh-add -l
Debe mostrar algo como:
256 SHA256:xxxxx id_ed25519 (ED25519)
1️⃣ Crea el archivo que Git necesita
En Git Bash:
mkdir -p ~/.config/git
touch ~/.config/git/allowed_signers
2️⃣ Mete tu llave pública ahí dentro
Primero copia tu llave:
cat ~/.ssh/id_ed25519.pub
Ahora edita el archivo:
nano ~/.config/git/allowed_signers
Pega esta línea en UNA sola línea:
<USER> <PEGA_AQUÍ_TU_LLAVE_COMPLETA>
Ejemplo real:
pruebauser ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMabc123xyz... tucorreo@dominio.com
Guarda:
- CTRL + O → Enter
- CTRL + X
3️⃣ Dile a Git que use ese archivo
git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signers
4️⃣ Verifica que quedó bien
git config --global --list | grep ssh
Debe salir:
gpg.format=ssh
user.signingkey=~/.ssh/id_ed25519.pub
gpg.ssh.allowedSignersFile=~/.config/git/allowed_signers
commit.gpgsign=true