Links

Git

Configuración

Configura la información del usuario utilizada a través de todos los repositorios locales
# Establecer un nombre que sea identificable para el crédito al revisar el historial de versiones
git config --global user.name “[firstname lastname]
# Establecer una dirección de correo electrónico que se asociará con cada marcador de historial
git config --global user.email “[valid-email]
# Establecer el color automático de la línea de comandos para Git para facilitar la revisión
git config --global color.ui auto

Setup e Init

Configura la información del usuario, inicializa y clona repositorios
# Inicializar un directorio existente como un repositorio de Git
git init
# Clonar un repositorio completo de una ubicación alojada a través de una URL
git clone [url]

Stage y Snapshot

Trabajando con snapshots y el área Git staging
# Mostrar archivos modificados en el directorio de trabajo, preparados para su próxima confirmación
git status
# Añade un archivo como se ve ahora a su próxima confirmación (etapa)
git add [file]
# Unstage un archivo conservando los cambios en el directorio de trabajo
git reset [file]
# Diff de lo que se cambia pero no se pone en stage
git diff
# Diff de lo que está staged pero aún no está commited
git diff --staged
# Confirma tu contenido staged como un nuevo snapshot commit
git commit -m[descriptive message]

Submodules

# Importa un submodulo nuevo
git submodule add $REMOTE_GIT $LOCAL_DIR
# Añade y commitea la importación
git add -A
git commit -m "$COMMIT_MESSAGE"
git push origin
# Actualizar submodulos
git pull --recurse-submodules
# Clonar un repositorio con sus submodulos
git clone --recurse-submodules $REMOTE_GIT
# Mover un submodulo
git mv $SUBMODULE_PATH_OLD $SUBMODULE_PATH_NEW
# Eliminar correctamente un submodulo
git rm $SUBMODULE_PATH
# Eliminar correctamente un submodulo (Método-2 DEPRECADO)
delete section from .gitmodules
git add .gitmodules
delete section from .git/config
git rm --cached $PATH_TO_SUBMODULE (not trailing slash!!)
rm -rf .git/modules/$PATH_TO_SUBMODULE (not trailing slash!!)
git commit -m "Removed Submodule "
rm -rf $PATH_TO_SUBMODULE

Branch y Merge

Separa el trabajo en branchs, modificando el contexto e integrando cambios
# Lista tus branches. Un * aparecerá al lado de tu branch activo
git branch
# Crear un nuevo branch en la confirmación actual
git branch [branch-name]
# Cambie a otro branch y chequealo en el directorio de trabajo
git checkout
# Hace un merge del historial del branch especificado en el actual
git merge [branch]
# Muestra todos los commiets en el historial del branch actual
git log

Inspeccionar y Comparar

Examina logs, diffs e información de objectos
# Muestra el historial de commits para el branch activo
git log
# Muestra los commits en el branch A qué no están en el branch B
git log branchB..branchA
# Muestra los commits que han modificado archivos, incluso a través de renames
git log --follow [file]
# Muestra las diferencias de lo que está en el branch A que no están en el branch B
git diff branchB...branchA
# Muestra cualquier object in Git human-redeable
git show [SHA]

Compartir y Actualizar

Actualiza los repositorios locales desde un repositorio en remoto
# Añade una Git URL como un alias
git remote add [alias] [url]
# Buscar todos los branches desde un Git remoto
git fetch [alias]
# Hace un merge de un branch remoto in tu branch actual para actualizarlo
git merge [alias]/[branch]
# Transmite los commits locales del branch al repositorio del branch en remoto
git push [alias] [branch]
# Busca y hace un merge de cualquier commit desde el tracking de un branch en remoto
git pull

Trackear Cambios de Ruta

Versionado de eliminación de archivos y cambios de ruta
# Elimina el archivo del proyecto y hace un stage del borrado para el commit
git rm [file]
# Cambia la ruta actual de un archivo y hace un stage del cambio
git mv [existing-path] [new-path]
# Muestra todos los logs del commit con indicadores de cualquier ruta modificada
git log --stat -M

Reescribir Historial

Reescribe branches, actualiza commits y limpia el historial
# Aplica cualquier commit del branch actual por delante del especificado
git rebase [branch]
# Limpia el staging area, rescribe el working tree desde el commit especificado
git reset --hard [commit]

Patrones de Ignore

Previene staging o commits de archivos no intencionados
# Guarda un archivo como el patrón deseado como .gitignore con string directa, coincidencias o wildcards
logs/
*.notes
pattern*/
# Patrón de ignore para ignorar en todos los repositorios locales del sistema
git config --global core.excludesfile [file]

Commit Temporales

Almacena archivos modificados, trackeados para cambiar branches
# Guarda cambios modificados y staged
git stash
# Lista a el orden acumulado de los cambios de los archivos guardados
git stash list
# Escribe desde el top de la lista de la pila
git stash pop
# Descarta los cambios desde el top de la lista de la pila
git stash drops

LFS (Archivos grandes)

# Instalación si no tienes el paquete
sudo apt install git-lfs
# Inicializa LFS en el repositorio
git lfs install
# Añade los archivos LFS
git lfs track --filename $FILE
# Si quieres añadir patrones de extensiones
git lfs track "*.psd"
#Añade el archivo .gitattributes
git add .gitattributes
#Commitea
git commit -m "Added LFS Support"
#Pushea
git push origin
#Añade el resto de archivos normalmente