Dominando Git: Comandos Esenciales y Conceptos Clave para Desarrolladores
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 16,86 KB
Conceptos Fundamentales de Control de Versiones
Versionado Semántico
El versionado semántico es un sistema para asignar números de versión que indican el tipo de cambios realizados:
- Fix (Corrección de errores): Incrementa la versión PATCH.
- Feat (Nueva funcionalidad): Incrementa la versión MINOR.
- Breaking Changes (Cambios que rompen la compatibilidad): Incrementa la versión MAJOR.
Definición de API
Una API (Interfaz de Programación de Aplicaciones) se refiere a un conjunto de librerías o funciones que pueden ser consumidas a través de la web. En este modelo, un cliente realiza solicitudes a un servidor, que es quien proporciona la funcionalidad o los datos.
Comandos Esenciales de Git
Operaciones con Repositorios Remotos
git pull --allow-unrelated-histories origin master
Este comando se utiliza para fusionar historias de ramas no relacionadas. Al ejecutarlo, Git intenta unir los archivos de ambas ramas, y el usuario debe resolver manualmente los conflictos para elegir el contenido correcto y eliminar cualquier código generado automáticamente por la fusión.
git remote -v
Muestra las URLs de los repositorios remotos configurados, indicando a dónde se envían (push
) y de dónde se obtienen (fetch
/pull
) los cambios.
Gestión de Ramas
Creación y Cambio de Rama
git branch -b <nombre_rama>
: Crea una nueva rama y te posiciona en ella.git checkout -b <nombre_rama>
: (Comando equivalente al anterior, más tradicional). Crea una nueva rama y te posiciona en ella.
Visualización de Ramas
git branch -v
: Muestra todas las ramas locales, junto con el mensaje del último commit de cada una y su ID corto.
Estado del Repositorio
git status -s
Muestra el estado de los ficheros del directorio de trabajo de una manera compacta y concisa.
Características Clave de Git
- Es rápido y escalable.
- Permite trabajar localmente y realiza instantáneas (snapshots) del proyecto.
- Soporta múltiples protocolos de comunicación.
- Es robusto, utilizando la tecnología de encriptación SHA-1 para la integridad de los datos.
- Es libre y gratuito.
- Disponible para Windows, Linux y macOS.
Relación Git y Plataformas Remotas
Git funciona como el cliente de control de versiones que se ejecuta localmente, mientras que plataformas como GitHub, Bitbucket o GitLab actúan como portales/servidores remotos para alojar repositorios.
Herramientas de Desarrollo
- Consolas: Entornos de línea de comandos para interactuar con Git.
- GUI (Graphical User Interfaces): Interfaces gráficas de usuario que facilitan el uso de Git.
- IDE (Integrated Development Environments): Entornos de desarrollo integrados como NetBeans o VS Code, que suelen incluir integración con Git.
Comandos Esenciales de Git (Continuación)
Comandos de Comparación y Visualización
git diff
Muestra las diferencias entre el directorio de trabajo y el área de preparación (staging area), o entre el área de preparación y el último commit, o entre dos commits, etc. Por defecto, muestra las diferencias de los ficheros modificados con respecto al último commit.
Gestión del Área de Preparación (Staging Area)
git reset .
Deshace la adición de todos los ficheros del área de preparación (índice), moviéndolos de nuevo al estado de "modificados" (unstage).
Gestión de Ramas (Continuación)
Crear Rama desde un Commit Específico
git branch <nombre_rama> <hash_commit>
: Crea una nueva rama a partir de un commit específico.
Comandos de Comparación y Visualización (Continuación)
git show
Muestra los metadatos de un commit (autor, fecha, mensaje) y las diferencias (diff) introducidas por ese commit.
Operaciones con Repositorios Remotos (Continuación)
git fetch
Descarga las ramas y los objetos de un repositorio remoto al repositorio local, pero sin fusionarlos automáticamente con las ramas de trabajo locales.
Plataformas de Alojamiento de Repositorios
Existen diversas plataformas web que permiten crear y alojar repositorios Git remotos, como Bitbucket, GitHub y GitLab.
Estado del Repositorio (Continuación)
git status
Muestra el estado actual de los ficheros en el directorio de trabajo y el área de preparación, indicando cuáles están modificados, añadidos, eliminados, etc.
Gestión de Etiquetas (Tags)
Visualizar Información de una Etiqueta
git show <nombre_etiqueta>
: Muestra la información detallada de una etiqueta, incluyendo el commit al que apunta. Ejemplo:git show v0.1.3
.
Preguntas Frecuentes sobre Git
¿Es posible hacer un git commit
sin un git init
previo?
No, es una afirmación incorrecta. Para poder realizar un git commit
, el directorio de trabajo debe ser un repositorio Git inicializado previamente con git init
.
Gestión del Área de Preparación (Staging Area) (Continuación)
Eliminar Ficheros del Índice (Unstage)
git restore --staged <nombre_fichero>
: Elimina un fichero del área de preparación, devolviéndolo al estado de "modificado" (untracked si era nuevo, o modified si ya estaba versionado).
Historial de Commits y Búsqueda
Filtrar Commits por Fecha
git log --after=<fecha>
: Muestra los commits realizados después de una fecha específica.
Filtrar Commits por Autor
git log --author=<nombre_persona>
: Muestra los commits realizados por un autor específico.
Gestión de Ramas (Continuación)
Cambiar de Rama
git switch <nombre_rama>
: Comando moderno para cambiar a una rama existente. (Alternativa agit checkout
).
Operaciones de Commit
Añadir y Confirmar Cambios en un Solo Paso
git commit --all
(ogit commit -a
): Añade automáticamente al área de preparación todos los ficheros que ya están siendo rastreados por Git y que han sido modificados o eliminados, y luego realiza el commit. No incluye ficheros nuevos (untracked).
Operaciones con Repositorios Remotos (Continuación)
Añadir un Repositorio Remoto
git remote add origin <url_repositorio>
: Añade un nuevo repositorio remoto con el nombre "origin" y la URL especificada.
Eliminar Ramas Remotas Obsoletas
git push --prune
: Elimina las ramas del repositorio remoto que ya no existen en el repositorio local.
Funcionamiento de git pull
El comando git pull
es una combinación de dos operaciones:
git fetch
: Descarga los cambios del repositorio remoto.git merge FETCH_HEAD
: Fusiona los cambios descargados con la rama local actual.
Ver Estadísticas de git pull
git pull --stat
: Realiza ungit pull
y muestra un resumen estadístico de los cambios fusionados (número de archivos cambiados, inserciones, eliminaciones).
Gestión de Etiquetas (Tags) (Continuación)
Eliminar una Etiqueta
git tag --delete <nombre_etiqueta>
: Elimina una etiqueta localmente. Para eliminarla del remoto, se necesitagit push origin :refs/tags/<nombre_etiqueta>
.
Historial de Commits y Búsqueda (Continuación)
Mostrar Commits con ID Abreviado
git log --abbrev-commit
: Muestra el historial de commits utilizando una versión abreviada del hash de cada commit.
Mostrar Información Detallada de un Commit
git show <hash_commit>
: Muestra los metadatos y el diff de un commit específico.
Deshacer Cambios en Git
Volver a un Estado Anterior y Borrar Commits
git reset --hard <hash_commit>
: Mueve el punteroHEAD
y la rama actual al commit especificado, y descarta todos los cambios en el directorio de trabajo y el área de preparación desde ese commit. ¡Es una operación destructiva!
Herramientas Gráficas de Git
Interfaz Gráfica Integrada
git gui
: Abre la interfaz gráfica de usuario (GUI) de Git, que permite realizar operaciones comunes de forma visual.
Navegar Ramas en la GUI
git gui browser <nombre_rama>
: Abre la interfaz gráfica de Git para explorar una rama específica y sus cambios.
Estado del Repositorio (Continuación)
git status -s
Muestra el estado de los ficheros en un formato compacto y conciso.
Comandos de Comparación y Visualización (Continuación)
git show
Muestra los metadatos de un commit y las diferencias con el commit anterior.
Conceptos Clave de Git
HEAD
Es un puntero que indica el commit actual en el que se encuentra el directorio de trabajo. Generalmente, apunta a la punta de la rama activa.
Información de Instalación
Ruta de Instalación Típica de Git en Windows
Una ruta común de instalación para Git en Windows es: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Git
.
Operaciones de Commit (Continuación)
Modificar el Último Mensaje de Commit
git commit --amend -m "mensaje corregido"
: Permite modificar el mensaje del último commit. También se puede usar para añadir cambios olvidados al último commit.
Gestión de Ramas (Continuación)
git rebase master
Aplica los cambios de la rama actual sobre la rama master
, reescribiendo el historial para crear una secuencia lineal de commits.
Listar Ramas
git branch
: Muestra todas las ramas locales existentes.
Operaciones con Repositorios Remotos (Continuación)
Destino de git fetch
El comando git fetch
descarga los cambios del repositorio remoto al repositorio local, específicamente a las ramas de seguimiento remoto.
Historial de Commits y Búsqueda (Continuación)
Ver el Historial de una Rama
git log
: Muestra el historial de commits de la rama actual.
Herramientas Gráficas de Git (Continuación)
Navegador de Historial Gráfico
gitk
: Abre una interfaz gráfica para visualizar el historial de commits y las ramas.
Gestión de Ramas (Continuación)
Listar Ramas por Patrón
git branch -l <patron_nombre_rama>
: Lista las ramas cuyos nombres coinciden con el patrón especificado.
Opciones de Comandos Git
Modo Silencioso
-q
(o--quiet
): Parámetro que se puede usar con algunos comandos Git para suprimir la salida de mensajes informativos, mostrando solo errores o resultados esenciales.
Archivado de Repositorios
Formatos de Compresión con git archive
git archive --list
: Muestra los formatos de archivo soportados porgit archive
para comprimir un repositorio o una parte de él.
Historial de Commits y Búsqueda (Continuación)
Visualizar Commits desde una Fecha (con gitk
)
gitk --since=<fecha>
: Abre la interfaz gráficagitk
mostrando los commits realizados a partir de una fecha específica.
Historial de Commits sin Fusiones
git log --no-merges
: Muestra el historial de commits, omitiendo los commits de fusión (merge commits).
Operaciones de Commit (Continuación)
Confirmar Cambios con Mensaje y Auto-Stage
git commit -a -m "texto"
: Combina las funcionalidades degit add
(para ficheros ya rastreados) ygit commit
en un solo paso, confirmando los cambios con el mensaje proporcionado.
Comandos de Comparación y Visualización (Continuación)
Mostrar Cambios en el Área de Preparación
git diff --staged
(ogit diff --cached
): Muestra las diferencias entre el área de preparación (staging area) y el último commit.
Gestión de Ramas (Continuación)
Crear una Rama Específica (Ejemplo)
git checkout -b Preprod
: Crea y cambia a una nueva rama llamada "Preprod".
Deshacer Cambios en Git (Continuación)
Deshacer el Último Commit (Manteniendo Cambios)
git reset --soft HEAD~1
: Deshace el último commit, pero mantiene los cambios en el área de preparación (staging area) y el directorio de trabajo.
Gestión del Área de Preparación (Staging Area) (Continuación)
Quitar Fichero del Índice (Unstage)
git reset <fichero>
: Quita un fichero específico del área de preparación, moviéndolo al estado de "modificado" (untracked si era nuevo, o modified si ya estaba versionado).
Historial de Commits y Búsqueda (Continuación)
Visualizar Historial como Grafo
git log --oneline --all --graph
: Muestra un historial de commits conciso, incluyendo todas las ramas, y representa las fusiones y ramificaciones como un grafo ASCII.
Conceptos Clave de Git (Continuación)
Definición de HEAD
HEAD
es el puntero al commit actualmente restaurado en el directorio de trabajo del repositorio local.
Comandos de Comparación y Visualización (Continuación)
Diferencias entre Ramas
git diff <rama1> <rama2>
: Muestra las diferencias entre los últimos commits de dos ramas específicas.
Información de Versión
Versión de Git Bash (Ejemplo)
La versión de Git Bash puede variar; un ejemplo es la versión 2.x.
Gestión del Área de Preparación (Staging Area) (Continuación)
Eliminar Ficheros del Índice sin Borrarlos del Disco
git rm --cached <fichero1> <fichero2>
: Elimina los ficheros especificados del área de preparación y del historial de Git, pero los mantiene en el directorio de trabajo (los convierte en "untracked").
Conceptos Clave de Git (Continuación)
Definición de Commit
Un commit es una instantánea de los ficheros de un proyecto en un momento dado, guardada en el repositorio Git.