-
1. Inicio - Sobre el Control de Versiones
-
2. Fundamentos de Git
-
3. Ramificaciones en Git
-
4. Git en el Servidor
- 4.1 Los Protocolos
- 4.2 Configurando Git en un servidor
- 4.3 Generando tu clave pública SSH
- 4.4 Configurando el servidor
- 4.5 El demonio Git
- 4.6 HTTP Inteligente
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git en un alojamiento externo
- 4.10 Resumen
-
5. Git en entornos distribuidos
-
6. GitHub
-
7. Herramientas de Git
- 7.1 Revisión por selección
- 7.2 Organización interactiva
- 7.3 Guardado rápido y Limpieza
- 7.4 Firmando tu trabajo
- 7.5 Buscando
- 7.6 Reescribiendo la Historia
- 7.7 Reiniciar Desmitificado
- 7.8 Fusión Avanzada
- 7.9 Rerere
- 7.10 Haciendo debug con Git
- 7.11 Submódulos
- 7.12 Agrupaciones
- 7.13 Replace
- 7.14 Almacenamiento de credenciales
- 7.15 Resumen
-
8. Personalización de Git
-
9. Git y Otros Sistemas
- 9.1 Git como Cliente
- 9.2 Migración a Git
- 9.3 Resumen
-
10. Los entresijos internos de Git
-
A1. Apéndice A: Git en otros entornos
- A1.1 Interfaces gráficas
- A1.2 Git en Visual Studio
- A1.3 Git en Eclipse
- A1.4 Git con Bash
- A1.5 Git en Zsh
- A1.6 Git en Powershell
- A1.7 Resumen
-
A2. Apéndice B: Integrando Git en tus Aplicaciones
- A2.1 Git mediante Línea de Comandos
- A2.2 Libgit2
- A2.3 JGit
-
A3. Apéndice C: Comandos de Git
- A3.1 Configuración
- A3.2 Obtener y Crear Proyectos
- A3.3 Seguimiento Básico
- A3.4 Ramificar y Fusionar
- A3.5 Compartir y Actualizar Proyectos
- A3.6 Inspección y Comparación
- A3.7 Depuración
- A3.8 Parcheo
- A3.9 Correo Electrónico
- A3.10 Sistemas Externos
- A3.11 Administración
- A3.12 Comandos de Fontanería
10.1 Los entresijos internos de Git - Fontanería y porcelana
Puede que hayas llegado a este capítulo saltando desde alguno previo o puede que hayas llegado tras leer todo el resto del libro - en uno u otro caso, aquí es donde aprenderás acerca del funcionamiento interno y la implementación de Git. Nos parece que esta información es realmente importante para entender cuan útil y potente es Git, pero algunas personas opinan que puede ser confuso e innecesariamente complejo para novatos. Por ello, lo hemos puesto en el capítulo final del libro; de tal forma que puedas leerlo antes o después, en cualquier momento, a lo largo de tu proceso de aprendizaje. Lo dejamos en tus manos.
Y, ahora que estamos aquí, comencemos con el tema. Ante todo, si no está aún suficientemente claro, Git es fundamentalmente un sistema de archivo de contenido localizable con una interfaz de usuario de VCS escrita sobre él. En breve vas a aprender más acerca de que significa esto.
En los primeros tiempos de Git (principalmente antes de la versión 1.5), la interfaz de usuario era mucho más compleja, ya que se centraba en el sistema de archivos en lugar de en mejorado VCS. En los últimos años, la IU se ha refinado hasta llegar a ser tan limpia y sencillo de usar como la de cualquier otro sistema; pero frecuentemente, el estereotipo persiste en lo complejo y difícil de aprender que era la IU anterior de Git.
La capa de contenido localizable del sistema de archivos es increíblemente interesante; por ello, es lo primero que vamos a cubrir en este capítulo. A continuación mostraremos los mecanismos de transporte y las tareas de mantenimiento del repositorio que posiblemente necesites usar alguna vez.
Fontanería y porcelana
Este libro habla acerca de como utilizar Git con más o menos 30 verbos, tales como checkout
, branch
, remote
, etc.
Pero, debido al origen de Git como una caja de herramientas para un VCS en lugar de como un completo y amigable sistema VCS, existen unos cuantos verbos para realizar tareas de bajo nivel y que se diseñaron para poder ser utilizados de forma encadenada al estilo UNIX o para ser utilizados en scripts.
Estos comandos son conocidos como los "comandos de fontanería", mientras que los comandos más amigables son conocidos como los "comandos de porcelana".
Los primeros nueve capítulos de este libro se encargan casi exclusivamente de los comandos de porcelana. Pero en este capítulo trataremos sobre todo con los comandos de fontanería; comandos que te darán acceso a los entresijos internos de Git y que te ayudarán a comprender cómo y por qué hace Git lo que hace como lo hace. Muchos de estos comando no están pensados para ser utilizados manualmente desde la línea de comandos; sino más bien para ser utilizados como bloques de construcción para nuevas herramientas y scripts de usuario personalizados.
Cuando lanzas git init
sobre una carpeta nueva o sobre una ya existente, Git crea la carpeta auxiliar .git
; la carpeta donde se ubica prácticamente todo lo almacenado y manipulado por Git.
Si deseas hacer una copia de seguridad de tu repositorio, con tan solo copiar esta carpeta a cualquier otro lugar ya tienes tu copia completa.
Todo este capítulo se encarga de repasar el contenido en dicha carpeta.
Tiene un aspecto como este:
$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/
Puede que veas algunos otros archivos en tu carpeta .git
, pero este es el contenido de un repositorio recién creado tras ejecutar git init
, -es la estructura por defecto.
El archivo description
se utiliza solo en el programa GitWeb; por lo que no necesitas preocuparte por él.
El archivo config
contiene las opciones de configuración específicas de este proyecto concreto, y la carpeta info
guarda un archivo global de exclusión con los patrones a ignorar además de los presentes en el archivo .gitignore
.
La carpeta hooks
contiene tus scripts, tanto de la parte cliente como de la parte servidor, tal y como se ha visto a detalle en el Puntos de enganche en Git.
Esto nos deja con cuatro entradas importantes: los archivos HEAD
e index
(todavía por ser creado), y las carpetas objects
y refs
.
Estos elementos forman el núcleo de Git.
La carpeta objects
guarda el contenido de tu base de datos, la carpeta refs
guarda los apuntadores a las confirmaciones de cambios (commits), el archivo HEAD
apunta a la rama que tengas activa (checked out) en este momento, y el archivo index
es donde Git almacena la información sobre tu área de preparación (staging área).
Vamos a mirar en detalle cada una de esas secciones, para ver cómo trabaja Git.