Hoja de referencia de comandos Git
Git es un sistema de control de versiones distribuido de código abierto, diseñado para manejar desde proyectos pequeños hasta muy grandes con rapidez y eficiencia. Git fue desarrollado por Linus Torvalds para ayudar a gestionar el desarrollo del kernel de Linux.
Conceptos básicos de Git
git init <directory>Crea un repositorio Git vacío en el directorio especificado. Si se ejecuta sin argumentos, inicializa el directorio actual como repositorio Git.
git clone <repo>Clona el repositorio ubicado en <repo> en la máquina local. El repositorio original puede estar en el sistema de archivos local o en una máquina remota a través de HTTP o SSH.
git config user.name <name>Define el nombre del autor para todos los commits en el repositorio actual.
git add <directory>Añade el contenido cambiado en <directory> para el próximo commit (staging).
git commit -m "<message>"Hace un commit de la captura de la etapa (staging), usando <message> como mensaje del commit.
git statusEnumera qué archivos están en etapa de preparación (staged), no preparados y sin seguimiento.
git logMuestra todo el historial de commits utilizando el formato predeterminado.
git diffCompara las diferencias entre el directorio de trabajo y el área de preparación (staging area).
Deshacer cambios
git revert <commit>Crea un nuevo commit que deshace todos los cambios realizados en <commit> y los aplica a la rama actual.
git reset <file>Elimina <file> del área de preparación, pero mantiene el directorio de trabajo sin cambios. Esto quita el archivo del área de preparación sin sobrescribir los cambios.
git clean -nMuestra qué archivos se eliminarán del directorio de trabajo. Use la bandera -f en lugar de -n para ejecutar la limpieza.
Reescribir el historial de Git
git commit --amendModifica el commit de Git más reciente. Si el directorio de trabajo tiene cambios pendientes, estos se incluirán en el commit modificado.
git rebase <base>Restablece la rama actual a <base>. <base> puede ser un ID de commit, nombre de rama, etiqueta o HEAD.
git reflogPermite ver todos los registros de operaciones de todas las ramas (incluyendo los registros de commits eliminados y operaciones de reset).
Ramas de Git
git branchEnumera todas las ramas. Añada un argumento <branch> para crear una nueva rama llamada <branch>.
git checkout -b <branch>Crea y activa una nueva rama llamada <branch>. Omita -b para activar una rama existente.
git merge <branch>Fusiona la rama <branch> en la rama actual.
Repositorios remotos
git remote add <name> <url>Añade un nuevo repositorio remoto. Después de añadirlo, puede usar <name> como atajo de <url> en otros comandos.
git fetch <remote> <branch>Obtiene todas las actualizaciones para la <rama> especificada del repositorio, pero no las fusiona con la rama local.
git pull <remote>Obtiene la copia remota especificada de la rama actual y la fusiona inmediatamente con la copia local.
git push <remote> <branch>Envía la rama a <remote>, junto con los commits y objetos necesarios. Si el repositorio remoto no existe, crea la rama con nombre en el repositorio remoto.
git config
git config --global user.name <name>Define el nombre del autor para todos los commits del usuario actual.
git config --global user.email <email>Define el correo electrónico del autor para todos los commits del usuario actual.
git config --global alias.<alias-name> <git-command>Crea un atajo (alias) para un comando de Git.
git config --system core.editor <editor>Establece el editor de texto utilizado por los comandos para todos los usuarios de la computadora.
git config --global --editAbre el archivo de configuración global en un editor de texto para edición manual.
git log
git log -<limit>Muestra la cantidad de <limit> registros de historial de commits.
git log --onelineMuestra el historial de commits comprimiendo cada commit en una sola línea.
git log -pMuestra el historial de commits con la diferencia completa de cada commit.
git log --statMuestra el historial de commits, incluyendo qué archivos se modificaron y el número relativo de líneas añadidas o eliminadas de cada archivo.
git log --author="<pattern>"Busca commits de un autor específico.
git log --grep="<pattern>"Busca en el historial de commits mediante coincidencias de expresiones regulares (regex).
git log <since>..<until>Muestra los commits ocurridos entre <since> y <until>.
git log -- <file>Solo muestra los registros de commit que incluyen el archivo especificado.
git diff
git diff HEADCompara las diferencias de archivos entre el directorio de trabajo y el repositorio (después de git commit).
git diff --cachedCompara las diferencias de archivos entre el área de preparación (después de git add) y el repositorio.
git reset
git resetRestablece el área de preparación para que coincida con el commit más reciente, pero mantiene el directorio de trabajo sin cambios.
git reset --hardRestablece tanto el área de preparación como el directorio de trabajo al commit más reciente, sobrescribiendo todos los cambios en el directorio de trabajo.
git reset <commit>Mueve el puntero de la rama actual hacia atrás hasta <commit> y restablece el área de preparación, pero sin cambiar el directorio de trabajo.
git reset --hard <commit>Igual que el anterior, pero restablece el área de preparación y el directorio de trabajo. Elimina los cambios no confirmados y todos los commits posteriores a <commit>.
git pull
git pull --rebase <remote>Obtiene la copia remota de la rama actual y la restablece (rebase) sobre la copia local. Utiliza git rebase en lugar de merge para integrar ramas.
git push
git push <remote> --forceEmpuje forzado (force push).
git push <remote> --allEnvía todas las ramas locales al remoto especificado.
git push <remote> --tagsEnvía todas las etiquetas locales al repositorio remoto.