git help <comando>
- Configuracion global: se almacena en
/etc/gitconfig
se obtiene con--system
- Configuracion de usuario: se almacena en
~/.gitconfig
o~/.config/git/config
se obtiene con--global
- Configuracion del repositorio
.git/config
casos de uso | comando |
---|---|
Configurar identidad nombre | git config --global user.name "Nombre" |
Configurar identidad email | git config --global user.email nombre@example.com |
Configurar editor | git config --global core.editor vi |
Configurar un alias para una orden | git config [--global] alias.<alias_deseado> 'orden git con parametros de opcion' |
Comprobar configuracion | git config --list |
casos de uso | comando |
---|---|
Iniciar un nuevo repositorio | git init [nombre-proyecto] |
casos de uso | comando |
---|---|
Clonar repositorio desde url | git clone <url> |
Clonar repositorio desde url en directorio | git clone <url> [dir] |
casos de uso | comando |
---|---|
Ver estado de ficheros | git status |
Ver estado de ficheros en formato abreviado | git status -s |
casos de uso | comando |
---|---|
Añadir fichero | git add <fichero> |
Añadir directorio | git add <directorio/> |
Añadir todos los ficheros nuevos o modificados | git add . git add -a |
Añadir los ficheros nuevos, modificados o eliminados | git add -A |
Añadir los ficheros que ya estan en seguimiento | git add -u |
Muestra lo que se añadiría | git add -n |
Añadir interactivo | git add -i |
Añadir parte del archivo | git add -p <archivo> |
casos de uso | comando |
---|---|
Eliminar un fichero del disco eliminandolo del seguimiento | git rm <fichero> |
Eliminar un fichero del disco eliminandolo del seguimiento si está en el area de confirmación | git rm -f <archivo> |
Eliminar del seguimiento sin eliminar del disco | git rm --cached <archivo> |
casos de uso | comando |
---|---|
Cambiar el nombre de un fichero en seguimiento | git mv <nombre> <nuevoNombre> |
casos de uso | comando |
---|---|
Realizar commit añadiendo el texto descriptivo mediante el editor por defecto | git commit |
Realizar commit añadiendo el texto descriptivo directamente | git commit -m "descripcion del commit" |
Realizar commit añadiendo al area de confirmación todos los ficheros modificados | git commit -a -m "descripcion del commit" |
Cambiar el mensaje o añadir cambios al ultimo commit | git commit --amend |
casos de uso | comando |
---|---|
Sacar cambios del area de confirmacion | git reset [HEAD] [<archivo>] |
Deshacer un commits apuntando HEAD a un commit concreto | git reset HEAD <commit_checksum> |
Deshacer el ultimo commits apuntando HEAD al commit anterior (deshace commit) | git reset --soft HEAD~ |
Deshacer el ultimo commits apuntando HEAD al commit anterior (deshace commit y add) | git reset [--mixed] HEAD~ |
Deshacer el ultimo commits apuntando HEAD al commit anterior (deshace commit, add y directorio de trabajo. Los cambios se perderan) | git reset --hard HEAD~ |
Descartar cambios no confirmados realizados en un archivo (se perderan) | git checkout -- [archivo] |
casos de uso | comando |
---|---|
ignorar ficheros con extension bak | *.bak |
añadir excepcion a regla previa | !lib.bak |
ignorar directorios | directorio/ |
ignorar ficheros en un directorio | ruta/*.txt |
ignorar ficheros en un directorio recursivamente | ruta/**/*.txt |
Ver ficheros ignorados en el repositorio | git ls-files --others --ignored --exclude-standard |
casos de uso | comando |
---|---|
Mostrar los ultimos commits | git log |
Mostrar los 'n' ultimos commits | git log -n |
Mostrar los ultimos commits mostrando diferencias introducidas | git log -p |
Mostrar los ultimos commits mostrando estadisticas | git log --stat |
Mostrar los ultimos commits aplicando formato de una linea | git log --pretty=oneline |
Mostrar los ultimos commits aplicando formato expecífico | git log --pretty=format:"%s" |
Mostrar los ultimos commits mostrando un grafico de ramificacion | git log --graph |
Mostrar los ultimos commits mostrando donde apuntan las ramas creadas | git log --decorate |
Mostrar comits donde aparezca un patron entre los cambios introducidos | git log -S<patron> |
Ver commits realizados en la rama "rama" no fusionados en la rama master | git log master..<rama> git log ^master <rama> |
Ver commits realizados en varias ramas no fusionados en la rama master | git log <rama1> <rama1> ^master |
Ver los cambios que vamos a subir al repositorio remoto si hacemos push | git log origin/master..HEAD |
Ver los cambios realizados entre dos ramas indicando a que rama corresponden los cambios | git log [--left-right] <rama1>...<rama2> |
Ver los cambios realizados entre dos ramas que modifican archivos en conflicto tras un merge | git log [--left-right] --merge |
casos de uso | comando |
---|---|
Ver todas las diferencias | git diff |
Ver diferencias en fichero | git diff <fichero> |
Ver diferencias en el area de confirmación | git diff --cached |
casos de uso | comando |
---|---|
Aparcando todos los cambios | git stash [save] |
Listando todos los cambios aparcados | git stash list |
Aplicando los ultimos cambios aparcados | git stash apply |
Borrando los cambios aparcados | git stash drop stash@{0} |
Aplicar ultimos cambios aparcados y borrarlos de la lista | git stash pop |
Aparcar solo los cambio no añadidos al area de confirmación | git stash --keep-index |
Decidir que cambios del fichero añadir al aparcamiento | git stash --patch |
Mover los cambios a una nueva rama | git stash branch <rama> |
casos de uso | comando |
---|---|
Eliminar archivos sin seguimiento que no esten ignorados | git clean |
Eliminar archivos sin seguimiento aunque esten ignorados | git clean -x |
Eliminar archivos y directorios sin seguimiento | git clean -d -f |
Ver que archivos y directorios se borrarán | git clean -d -n |
Eliminar archivos de forma interactiva | git clean -i |
casos de uso | comando |
---|---|
Ver los repositorios remotos configurados (solo nombre) | git remote |
Ver los repositorios remotos configurados (nombre y url) | git remote -v |
Añadir repositorio remoto | git remote add <nombre-remoto> <url-remoto> |
Inspeccionar repositorio remoto | git remote show <nombre-remoto> |
Renombrar repositorio remoto | git remote rename [nombre-remoto] [nuevo_nombre-remoto] |
Eliminar repositorio remoto | git remote rm <nombre-remoto> |
casos de uso | comando |
---|---|
Traer informacion de cambios del remoto "origin" | git fetch |
Traer informacion de cambios del un repositorio remoto concreto | git fetch <nombre-remoto> |
casos de uso | comando |
---|---|
Llevar cambios registrados al remoto "origin" | git push |
Llevar cambios registrados a remoto concreto | git push <nombre-remoto> |
Llevar cambios de una rama al remoto "origin" | git push origin <rama> |
Llevar una etiqueta al remoto "origin" | git push origin <tag> |
Llevar todas las etiquetas al remoto "origin" | git push origin --tags |
casos de uso | comando |
---|---|
Listar etiquetas disponibles | git tag |
Listar etiquetas que cumplen con un criterio | git tag -l 'V1.*' |
Crear etiqueta anotada | git tag -a <tag_name> [-m 'comentario de etiqueta'] |
Crear etiqueta anotada en un commit anterior | git tag -a <tag_name> <commit_checksum> |
Crear etiqueta ligera | git tag <tag_name> |
Borrar una etiqueta | git tag -d <tag_name> |
Borrar una etiqueta en repositorio remoto | git push origin :<tag_name> |
casos de uso | comando |
---|---|
Listar ramas disponibles | git branch |
Listar ramas viendo ultimos cambios confirmados en cada rama | git branch -v |
Listar ramas fusionadas en la rama activa | git branch --merged |
Listar ramas con trabajos sin fusionar en la rama activa | git branch --no-merged |
Crear ramas | git branch <rama> |
Borrar ramas sin cambios pendientes de fusionar | git branch -d <rama> |
Borrar ramas con cambios pendientes de fusionar | git branch -D <rama> |
Borrar ramas en repositorio remoto | git branch -dr <remote/rama> |
Forzar rama local seguir rama remota (para pull/fetch) | git branch -u <remote/rama> |
casos de uso | comando |
---|---|
Cambiar de rama activa | git checkout <rama> |
Cambiar de rama activa creando la nueva rama | git checkout -b <rama> |
casos de uso | comando |
---|---|
Fusionar rama en la rama activa | git merge <rama> |
Fusionar rama en la rama activa sin dejar commit de la fusión | git merge <rama> --no-commit |
Fusionar evitando conflictos por espacios en blanco | git merge -Xignore-all-space <rama> |
Abortar una fusion que reporta conflictos | git merge --abort |
Continuar una fusion que ha reportado conflictos tras corregir | git merge --continue |
Fusionar rama y en caso de conflicto resolver con los cambios en la rama actual | git merge -Xours <rama> |
Fusionar rama y en caso de conflicto resolver con los cambios en la rama a fusionar | git merge -Xtheirs <rama> |
casos de uso | comando |
---|---|
Reorganizar rama activa sobre otra | git rebase <rama> |
casos de uso | alias | ejemplo de uso |
---|---|---|
Log en formato abreviado, mostrando las ramas de forma grafica | alias.l=log --oneline --decorate --graph --branches | git l |
Log en formato abreviado, mostrando por quien y cuando se realizo | alias.ll=log --pretty=format:'%h: %an, %cr, %s' | git ll -S<patron_de_cambios_buscado> |
Listar cambios del ultimo commit | alias.last=log -p -1 HEAD | git last |
Ver status de forma abreviada | alias.st=status -s | git st |
Realizar un commit | alias.c=commit -m | git c "comentario del commit" |
Añadir todos los ficheros con cambios al stage | alias.a=add . | git a |
Alias para la orden branch | alias.b=branch | git b |
Alias para la orden checkout | alias.ch=checkout | git ch <rama> o git ch -b <nueva_rama> |
Alias para la orden difftool | alias.d=difftool | git d <fichero> |
casos de uso | comando |
---|---|
Ver el hash de cualquier commit/stash que se haya registrado en el repositorio utilizando reflog | git reflog |
Ver el hash de cualquier commit/stash que se haya registrado en el repositorio utilizando git log (requiere el alias definido arriba) | git l --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' ) |
Ver el hash de cualquier commit/stash que se haya registrado en el repositorio utilizando gitk | gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' ) |
Recuperar el commit de un stash borrado | git stash apply <stash_hash> |
Recuperar un commit borrado (ojo al --hard. Aparcar cambios que no se quieran perder!) | git reset --hard <commit_hash> |