# Recopilación de comandos GIT ## Configuración Básica Configurar Nombre que salen en los commits ```ssh git config --global user.name "dasdo" ``` Configurar Email ```ssh git config --global user.email dasdo1@gmail.com ``` Marco de colores para los comando ```ssh git config --global color.ui true ``` *Ejemplo de configuración del archivo [.gitconfig](.gitconfig)* ## Listar Git Config Listar toda la configuración Git git config --list Muestra la ubicación de los archivos de configuración Git donde se definen estos ajustes git config --list --show-origin Separar las listas de configuración global, local y system git config --list --local git config --list --global git config --list --system ## Iniciando repositorio Iniciamos GIT en la carpeta donde esta el proyecto ```ssh git init ``` Clonamos el repositorio de github o bitbucket ```ssh git clone ``` Añadimos todos los archivos para el commit ```ssh git add . ``` Hacemos el primer commit ```ssh git commit -m "Texto que identifique por que se hizo el commit" ``` subimos al repositorio ```ssh git push origin master ``` ## GIT CLONE Clonamos el repositorio de github o bitbucket ```ssh git clone ``` Clonamos el repositorio de github o bitbucket ????? ```ssh git clone git-demo ``` ## GIT ADD Añadimos todos los archivos para el commit ```ssh git add . ``` Añadimos el archivo para el commit ```ssh git add ``` Añadimos todos los archivos para el commit omitiendo los nuevos ```ssh git add --all ``` Añadimos todos los archivos con la extensión especificada ```ssh git add *.txt ``` Añadimos todos los archivos dentro de un directorio y de una extensión especifica ```ssh git add docs/*.txt ``` Añadimos todos los archivos dentro de un directorios ```ssh git add docs/ ``` ## GIT COMMIT Cargar en el HEAD los cambios realizados ```ssh git commit -m "Texto que identifique por que se hizo el commit" ``` Agregar y Cargar en el HEAD los cambios realizados ```ssh git commit -a -m "Texto que identifique por que se hizo el commit" ``` De haber conflictos los muestra ```ssh git commit -a ``` Agregar al ultimo commit, este no se muestra como un nuevo commit en los logs. Se puede especificar un nuevo mensaje ```ssh git commit --amend -m "Texto que identifique por que se hizo el commit" ``` ## GIT PUSH Subimos al repositorio ```ssh git push ``` Subimos un tag ```ssh git push --tags ``` ## GIT LOG Muestra los logs de los commits ```ssh git log ``` Muestras los cambios en los commits ```ssh git log --oneline --stat ``` Muestra graficos de los commits ```ssh git log --oneline --graph ``` ## GIT DIFF Muestra los cambios realizados a un archivo ```ssh git diff git diff --staged ``` ## GIT HEAD Saca un archivo del commit ```ssh git reset HEAD ``` Devuelve el ultimo commit que se hizo y pone los cambios en staging ```ssh git reset --soft HEAD^ ``` Devuelve el ultimo commit y todos los cambios ```ssh git reset --hard HEAD^ ``` Devuelve los 2 ultimo commit y todos los cambios ```ssh git reset --hard HEAD^^ ``` Rollback merge/commit ```ssh git log git reset --hard ``` ## GIT REMOTE Agregar repositorio remoto ```ssh git remote add origin ``` Cambiar de remote ```ssh git remote set-url origin ``` Remover repositorio ```ssh git remote rm ``` Muestra lista repositorios ```ssh git remote -v ``` Muestra los branches remotos ```ssh git remote show origin ``` Limpiar todos los branches eliminados ```ssh git remote prune origin ``` ## GIT BRANCH Crea un branch ```ssh git branch ``` Lista los branches ```ssh git branch ``` Comando -d elimina el branch y lo une al master ```ssh git branch -d ``` Elimina sin preguntar ```ssh git branch -D ``` ## GIT TAG Muestra una lista de todos los tags ```ssh git tag ``` Crea un nuevo tags ```ssh git tag -a - m "esta es la versión x" ``` ## GIT REBASE Los rebase se usan cuando trabajamos con branches esto hace que los branches se pongan al día con el master sin afectar al mismo Une el branch actual con el mastar, esto no se puede ver como un merge ```ssh git rebase ``` Cuando se produce un conflicto no das las siguientes opciones: cuando resolvemos los conflictos --continue continua la secuencia del rebase donde se pauso ```ssh git rebase --continue ``` Omite el conflicto y sigue su camino ```ssh git rebase --skip ``` Devuelve todo al principio del rebase ```ssh git reabse --abort ``` Para hacer un rebase a un branch en especifico ```ssh git rebase ``` ## OTROS COMANDOS Lista un estado actual del repositorio con lista de archivos modificados o agregados ```ssh git status ``` Quita del HEAD un archivo y le pone el estado de no trabajado ```ssh git checkout -- ``` Crea un branch en base a uno online ```ssh git checkout -b newlocalbranchname origin/branch-name ``` Busca los cambios nuevos y actualiza el repositorio ```ssh git pull origin ``` Cambiar de branch ```ssh git checkout ``` Une el branch actual con el especificado ```ssh git merge ``` Verifica cambios en el repositorio online con el local ```ssh git fetch ``` Borrar un archivo del repositorio ```ssh git rm ``` ## Fork Descargar remote de un fork ``` git remote add upstream ``` Merge con master de un fork ``` git fetch upstream git merge upstream/master ``` ## Info de Git con más detalles Con explicaciones, gráficos, emoticonos... no tan seco como este README: - Apuntes "[Comandos de git](https://vergaracarmona.es/comandos-de-git/)" - [Apuntes del Curso de Git](https://vergaracarmona.es/wp-content/uploads/2022/10/Curso-git_vergaracarmona.es_.pdf) de [Juan Carlos Rubio](https://www.linkedin.com/in/juan-carlos-rubio-pineda-es) en [OpenWebinars](https://openwebinars.net/cursos/git/) por el que me dieron esta [certificación](https://vergaracarmona.es/wp-content/uploads/2022/05/OpenWebinars-Git.pdf). [Manuel Vergara](https://vergaracarmona.es)