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 a git checkout).

Operaciones de Commit

Añadir y Confirmar Cambios en un Solo Paso

  • git commit --all (o git 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 un git 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 necesita git 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 puntero HEAD 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 por git 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áfica gitk 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 de git add (para ficheros ya rastreados) y git 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 (o git 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.

Entradas relacionadas: