Comandos más usados en Git
Comandos principales

En git se utilizan 3 estados de los ficheros:

  • untracked (fichero existe pero no forma parte de git)
  • staged (fichero añadido a git pero sin los cambios)
  • commited (fichero con los cambios)
git init
Crea un repositorio git en el directorio actual
git clone https://github.com/user/project.git
Descarga (clona) la rama master de un repositorio de github en el directorio actual
git config --global user.name nombre
Establece a nivel global el nombre de usuario
git config --global user.email mi@email
Establece a nivel global el email del usuario
Fichero .gitignore
En ese fichero se especifican los ficheros o directorios que quedan fuera del control de git
git status
Muestra el estado del repositorio (directorio de trabajo, staging area y repositorio
git add fichero
Añade un fichero al staging area
git commit -m fichero
Añade un fichero al repositorio desde el staging area
git commit --amend
Sobrescribe el último commit por si queremos modificar el mensaje o los archivos involucrados
HEAD
Este alias apunta siempre al último commit de la rama actual
^
Este símbolo apunta siempre a un commit atrás
^^
Este símbolo apunta siempre a dos commit atrás (y así sucesivamente)
~N
Este símbolo apunta siempre a N commits atrás
git merge rama2
Mezcla los cambios de la rama2 a la rama actual
Logs
git log --fichero nombre_fichero
Muestra los commits de ese fichero
git log --after={2019-05-30}
Muestra los commits a partir de una fecha dada (YYYY-MM-DD)
git log --decorate --graph --all
Muestra los commits en un formato gráfico
git blame nombre_fichero
Muestra los detalles de quien ha modificado el fichero dado
Etiquetas
git tag
Muestra las etiquetas
git tag -a v1.1 -m mensaje id_commit
Crea una etiqueta v1.1 con el mensaje dado. Opcionalmente se puede etiquetar un commit pasado igual a id_commit
git tag -d nombre
Elimina una etiqueta con el nombre dado
git push origin mitag
Envia al servidor remoto una etiqueta con el nombre mitag. Opcionalmente usar --tags para transferir todas las etiquetas locales
Ramas
git branch
Lista de todas las ramas del proyecto
git branch -v
Lista de todas las ramas del proyecto con los últimos cambios
git branch nombre_rama
Crea una rama denominada nombre_rama
git branch -d nombre_rama
Elimina una rama ya mergeada
git branch -D nombre_rama
Elimina una rama no mergeada
Revertir y resetear cambios
git revert id_commit
Revierte los cambios del id_commit dado haciendo un nuevo commit
git reset master^ --hard
Vuelve al commit anterior (^) sin conservar los cambios
git reset master^ --soft
Vuelve al commit anterior (^) y conserva los cambios en el staging area
git reset master^ --mixed
Vuelve al commit anterior (^) y conserva los cambios en el working area
git checkout id_commit fichero
Deja un fichero a los cambios especificados en id_commit
Checkout
git checkout commit/rama/etiqueta
Posiciona los cambios en un cierto commit/rama/etiqueta
git checkout -b nombre_rama
Crea una nueva rama denominada nombre_rama y se posiciona en ella
git checkout -- nombre_fichero
Recupera un fichero denominado nombre_fichero borrado por error
Stash
git stash
Guarda los cambios provisionales en una area denominada stash
git stash list
Ver el contenido del area de stash
git stash apply
Aplica los cambios recientes del area stash en el area de trabajo
git stash drop stash@{n}
Elimina el cambio n del area stash
git stash branch nombre_rama
Aplica los cambios recientes del area stash creando una rama denominada nombre_rama
Comandos para repositorios remotos
git fetch
Obtiene los cambios de un repositorio remoto
git remote add url
Añade una rama de un repositorio remoto que reside en una url
git remote -v
Lista todos los repositorios locales con el último commit
git remote -v -a
Lista todos los repositorios locales y remotos con el último commit
git remote rename nombre
Cambia el nombre del alias del repositorio remoto
git remote rm nombre
Elimina en local la referencia al repositorio remoto
git checkout -b rama origin/rama
Crear la rama local de la rama remota y obtener los cambios
git push alias rama
Empuja los cambios de la rama local a la rama remota alias
git pull alias rama
Obtiene y consolida los cambios remotos en la rama local
Alias de comandos
alias.co "checkout"
Crea un alias co para el comando git checkout
alias.ci "commit"
Crea un alias ci para el comando git commit
alias.log "log --online"
Crea un alias log para el comando git log --online