CINXE.COM

Git - Referencias Git

<!DOCTYPE html> <html lang="es"> <head> <meta charset='utf-8'> <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Git - Referencias Git</title> <link href="/favicon.ico" rel='shortcut icon' type='image/x-icon'> <link rel="stylesheet" href="/application.min.css"> <script src="/js/modernizr.js"></script> <script src="/js/modernize.js"></script> </head> <body id="documentation"> <div class="inner"> <header> <a href="/"><img src="/images/logo@2x.png" width="110" height="46" alt="Git" /></a> <span id="tagline"></span> <script type="text/javascript"> const taglines = [ "fast-version-control", "everything-is-local", "distributed-even-if-your-workflow-isnt", "local-branching-on-the-cheap", "distributed-is-the-new-centralized" ]; var tagline = taglines[Math.floor(Math.random() * taglines.length)]; document.getElementById('tagline').innerHTML = '--' + tagline; </script> <form id="search" action="/search/results"> <input id="search-text" name="search" placeholder="Type / to search entire site…" autocomplete="off" type="text" /> </form> <div id="search-results"></div> </header> </div> <div class="inner"> <div id="content-wrapper"> <div tabindex="1" class="sidebar-btn"></div> <aside class="sidebar" id="sidebar"> <nav> <ul> <li> <a href="/about">About</a> <ul> </ul> </li> <li> <a href="/doc" class="active">Documentation</a> <ul class="expanded"> <li> <a href="/docs">Reference</a> </li> <li> <a href="/book" class="active">Book</a> </li> <li> <a href="/videos">Videos</a> </li> <li> <a href="/doc/ext">External Links</a> </li> </ul> </li> <li> <a href="/downloads">Downloads</a> <ul > <li> <a href="/downloads/guis">GUI Clients</a> </li> <li> <a href="/downloads/logos">Logos</a> </li> </ul> </li> <li> <a href="/community">Community</a> </li> </ul> <hr class="sidebar"> <p> This book is available in <a href="/book/en/v2/Git-Internals-Git-References">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Git-Referanslar%c4%b1">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/%d0%9f%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b5-B:-%d0%92%d0%b3%d1%80%d0%b0%d0%b6%d0%b4%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-Git-%d0%b2-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d1%8f-JGit">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-Interna-Git-Referenzen">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Los-entresijos-internos-de-Git-Referencias-Git">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Les-tripes-de-Git-R%c3%a9f%c3%a9rences-Git">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/Git%e3%81%ae%e5%86%85%e5%81%b4-Git%e3%81%ae%e5%8f%82%e7%85%a7">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Git-Refs">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-Binnenwerk-Git-Referenties">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/Git-%d0%b8%d0%b7%d0%bd%d1%83%d1%82%d1%80%d0%b8-%d0%a1%d1%81%d1%8b%d0%bb%d0%ba%d0%b8-%d0%b2-Git">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Notranjost-Gita-Reference-Git">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Mga-Panloob-ng-GIT-Git-References">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9f%d0%be%d1%81%d0%b8%d0%bb%d0%b0%d0%bd%d0%bd%d1%8f-Git">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/Git-%e5%86%85%e9%83%a8%e5%8e%9f%e7%90%86-Git-%e5%bc%95%e7%94%a8">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Git-Internals-Git-References">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%92%d0%bd%d0%b0%d1%82%d1%80%d0%b5%d1%88%d0%bd%d0%be%d1%81%d1%82%d0%b0-%d0%bd%d0%b0-Git-Git-References">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Referencje-w-Git">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%93%d0%b8%d1%82-%d0%b8%d0%b7%d0%bd%d1%83%d1%82%d1%80%d0%b0-%d0%93%d0%b8%d1%82-%d1%80%d0%b5%d1%84%d0%b5%d1%80%d0%b5%d0%bd%d1%86%d0%b5">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-Internals-Git-References">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/Git-Internals-Git-References">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-Internals-Git-References">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/Git-Internals-Git-References" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-Internals-Git-References">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-Internals-Git-References">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-Internals-Git-References">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Refer%c3%aancias-do-Git">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Internos-do-Git-Git-References">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-Internals-Git-References">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Dahili-Git-%c3%96geleri-Git-Referanslar%c4%b1">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit/progit2-es">hosted on GitHub.</a></br> Patches, suggestions and comments are welcome. </p> </nav> </aside> <div id="content"> <div id="book-chapters"> <a class="dropdown-trigger" id="book-chapters-trigger" data-panel-id="chapters-dropdown" href="#">Chapters ▾</a> <div class='dropdown-panel' id='chapters-dropdown'> <div class='three-column'> <div class="column-left"> <ol class='book-toc'> <li class='chapter'> <h2>1. <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Acerca-del-Control-de-Versiones">Inicio - Sobre el Control de Versiones</a></h2> <ol> <li> 1.1 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Acerca-del-Control-de-Versiones">Acerca del Control de Versiones</a> </li> <li> 1.2 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Una-breve-historia-de-Git">Una breve historia de Git</a> </li> <li> 1.3 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Fundamentos-de-Git">Fundamentos de Git</a> </li> <li> 1.4 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-La-L%c3%adnea-de-Comandos">La Línea de Comandos</a> </li> <li> 1.5 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Instalaci%c3%b3n-de-Git">Instalación de Git</a> </li> <li> 1.6 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Configurando-Git-por-primera-vez">Configurando Git por primera vez</a> </li> <li> 1.7 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-%c2%bfC%c3%b3mo-obtener-ayuda%3F">¿Cómo obtener ayuda?</a> </li> <li> 1.8 <a href="/book/es/v2/Inicio---Sobre-el-Control-de-Versiones-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/es/v2/Fundamentos-de-Git-Obteniendo-un-repositorio-Git">Fundamentos de Git</a></h2> <ol> <li> 2.1 <a href="/book/es/v2/Fundamentos-de-Git-Obteniendo-un-repositorio-Git">Obteniendo un repositorio Git</a> </li> <li> 2.2 <a href="/book/es/v2/Fundamentos-de-Git-Guardando-cambios-en-el-Repositorio">Guardando cambios en el Repositorio</a> </li> <li> 2.3 <a href="/book/es/v2/Fundamentos-de-Git-Ver-el-Historial-de-Confirmaciones">Ver el Historial de Confirmaciones</a> </li> <li> 2.4 <a href="/book/es/v2/Fundamentos-de-Git-Deshacer-Cosas">Deshacer Cosas</a> </li> <li> 2.5 <a href="/book/es/v2/Fundamentos-de-Git-Trabajar-con-Remotos">Trabajar con Remotos</a> </li> <li> 2.6 <a href="/book/es/v2/Fundamentos-de-Git-Etiquetado">Etiquetado</a> </li> <li> 2.7 <a href="/book/es/v2/Fundamentos-de-Git-Alias-de-Git">Alias de Git</a> </li> <li> 2.8 <a href="/book/es/v2/Fundamentos-de-Git-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/es/v2/Ramificaciones-en-Git-%c2%bfQu%c3%a9-es-una-rama%3F">Ramificaciones en Git</a></h2> <ol> <li> 3.1 <a href="/book/es/v2/Ramificaciones-en-Git-%c2%bfQu%c3%a9-es-una-rama%3F">¿Qué es una rama?</a> </li> <li> 3.2 <a href="/book/es/v2/Ramificaciones-en-Git-Procedimientos-B%c3%a1sicos-para-Ramificar-y-Fusionar">Procedimientos Básicos para Ramificar y Fusionar</a> </li> <li> 3.3 <a href="/book/es/v2/Ramificaciones-en-Git-Gesti%c3%b3n-de-Ramas">Gestión de Ramas</a> </li> <li> 3.4 <a href="/book/es/v2/Ramificaciones-en-Git-Flujos-de-Trabajo-Ramificados">Flujos de Trabajo Ramificados</a> </li> <li> 3.5 <a href="/book/es/v2/Ramificaciones-en-Git-Ramas-Remotas">Ramas Remotas</a> </li> <li> 3.6 <a href="/book/es/v2/Ramificaciones-en-Git-Reorganizar-el-Trabajo-Realizado">Reorganizar el Trabajo Realizado</a> </li> <li> 3.7 <a href="/book/es/v2/Ramificaciones-en-Git-Recapitulaci%c3%b3n">Recapitulación</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/es/v2/Git-en-el-Servidor-Los-Protocolos">Git en el Servidor</a></h2> <ol> <li> 4.1 <a href="/book/es/v2/Git-en-el-Servidor-Los-Protocolos">Los Protocolos</a> </li> <li> 4.2 <a href="/book/es/v2/Git-en-el-Servidor-Configurando-Git-en-un-servidor">Configurando Git en un servidor</a> </li> <li> 4.3 <a href="/book/es/v2/Git-en-el-Servidor-Generando-tu-clave-p%c3%bablica-SSH">Generando tu clave pública SSH</a> </li> <li> 4.4 <a href="/book/es/v2/Git-en-el-Servidor-Configurando-el-servidor">Configurando el servidor</a> </li> <li> 4.5 <a href="/book/es/v2/Git-en-el-Servidor-El-demonio-Git">El demonio Git</a> </li> <li> 4.6 <a href="/book/es/v2/Git-en-el-Servidor-HTTP-Inteligente">HTTP Inteligente</a> </li> <li> 4.7 <a href="/book/es/v2/Git-en-el-Servidor-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/es/v2/Git-en-el-Servidor-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/es/v2/Git-en-el-Servidor-Git-en-un-alojamiento-externo">Git en un alojamiento externo</a> </li> <li> 4.10 <a href="/book/es/v2/Git-en-el-Servidor-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/es/v2/Git-en-entornos-distribuidos-Flujos-de-trabajo-distribuidos">Git en entornos distribuidos</a></h2> <ol> <li> 5.1 <a href="/book/es/v2/Git-en-entornos-distribuidos-Flujos-de-trabajo-distribuidos">Flujos de trabajo distribuidos</a> </li> <li> 5.2 <a href="/book/es/v2/Git-en-entornos-distribuidos-Contribuyendo-a-un-Proyecto">Contribuyendo a un Proyecto</a> </li> <li> 5.3 <a href="/book/es/v2/Git-en-entornos-distribuidos-Manteniendo-un-proyecto">Manteniendo un proyecto</a> </li> <li> 5.4 <a href="/book/es/v2/Git-en-entornos-distribuidos-Resumen">Resumen</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/es/v2/GitHub-Creaci%c3%b3n-y-configuraci%c3%b3n-de-la-cuenta">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/es/v2/GitHub-Creaci%c3%b3n-y-configuraci%c3%b3n-de-la-cuenta">Creación y configuración de la cuenta</a> </li> <li> 6.2 <a href="/book/es/v2/GitHub-Participando-en-Proyectos">Participando en Proyectos</a> </li> <li> 6.3 <a href="/book/es/v2/GitHub-Mantenimiento-de-un-proyecto">Mantenimiento de un proyecto</a> </li> <li> 6.4 <a href="/book/es/v2/GitHub-Gesti%c3%b3n-de-una-organizaci%c3%b3n">Gestión de una organización</a> </li> <li> 6.5 <a href="/book/es/v2/GitHub-Scripting-en-GitHub">Scripting en GitHub</a> </li> <li> 6.6 <a href="/book/es/v2/GitHub-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/es/v2/Herramientas-de-Git-Revisi%c3%b3n-por-selecci%c3%b3n">Herramientas de Git</a></h2> <ol> <li> 7.1 <a href="/book/es/v2/Herramientas-de-Git-Revisi%c3%b3n-por-selecci%c3%b3n">Revisión por selección</a> </li> <li> 7.2 <a href="/book/es/v2/Herramientas-de-Git-Organizaci%c3%b3n-interactiva">Organización interactiva</a> </li> <li> 7.3 <a href="/book/es/v2/Herramientas-de-Git-Guardado-r%c3%a1pido-y-Limpieza">Guardado rápido y Limpieza</a> </li> <li> 7.4 <a href="/book/es/v2/Herramientas-de-Git-Firmando-tu-trabajo">Firmando tu trabajo</a> </li> <li> 7.5 <a href="/book/es/v2/Herramientas-de-Git-Buscando">Buscando</a> </li> <li> 7.6 <a href="/book/es/v2/Herramientas-de-Git-Reescribiendo-la-Historia">Reescribiendo la Historia</a> </li> <li> 7.7 <a href="/book/es/v2/Herramientas-de-Git-Reiniciar-Desmitificado">Reiniciar Desmitificado</a> </li> <li> 7.8 <a href="/book/es/v2/Herramientas-de-Git-Fusi%c3%b3n-Avanzada">Fusión Avanzada</a> </li> <li> 7.9 <a href="/book/es/v2/Herramientas-de-Git-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/es/v2/Herramientas-de-Git-Haciendo-debug-con-Git">Haciendo debug con Git</a> </li> <li> 7.11 <a href="/book/es/v2/Herramientas-de-Git-Subm%c3%b3dulos">Submódulos</a> </li> <li> 7.12 <a href="/book/es/v2/Herramientas-de-Git-Agrupaciones">Agrupaciones</a> </li> <li> 7.13 <a href="/book/es/v2/Herramientas-de-Git-Replace">Replace</a> </li> <li> 7.14 <a href="/book/es/v2/Herramientas-de-Git-Almacenamiento-de-credenciales">Almacenamiento de credenciales</a> </li> <li> 7.15 <a href="/book/es/v2/Herramientas-de-Git-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Configuraci%c3%b3n-de-Git">Personalización de Git</a></h2> <ol> <li> 8.1 <a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Configuraci%c3%b3n-de-Git">Configuración de Git</a> </li> <li> 8.2 <a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Git-Attributes">Git Attributes</a> </li> <li> 8.3 <a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Puntos-de-enganche-en-Git">Puntos de enganche en Git</a> </li> <li> 8.4 <a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Un-ejemplo-de-implantaci%c3%b3n-de-una-determinada-pol%c3%adtica-en-Git">Un ejemplo de implantación de una determinada política en Git</a> </li> <li> 8.5 <a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Recapitulaci%c3%b3n">Recapitulación</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/es/v2/Git-y-Otros-Sistemas-Git-como-Cliente">Git y Otros Sistemas</a></h2> <ol> <li> 9.1 <a href="/book/es/v2/Git-y-Otros-Sistemas-Git-como-Cliente">Git como Cliente</a> </li> <li> 9.2 <a href="/book/es/v2/Git-y-Otros-Sistemas-Migraci%c3%b3n-a-Git">Migración a Git</a> </li> <li> 9.3 <a href="/book/es/v2/Git-y-Otros-Sistemas-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/es/v2/Los-entresijos-internos-de-Git-Fontaner%c3%ada-y-porcelana">Los entresijos internos de Git</a></h2> <ol> <li> 10.1 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Fontaner%c3%ada-y-porcelana">Fontanería y porcelana</a> </li> <li> 10.2 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Los-objetos-Git">Los objetos Git</a> </li> <li> 10.3 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Referencias-Git" class="active">Referencias Git</a> </li> <li> 10.4 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Archivos-empaquetadores">Archivos empaquetadores</a> </li> <li> 10.5 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Las-especificaciones-para-hacer-referencia-a%e2%80%a6%e2%80%8b-refspec">Las especificaciones para hacer referencia a…​ (refspec)</a> </li> <li> 10.6 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Protocolos-de-transferencia">Protocolos de transferencia</a> </li> <li> 10.7 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Mantenimiento-y-recuperaci%c3%b3n-de-datos">Mantenimiento y recuperación de datos</a> </li> <li> 10.8 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Variables-de-entorno">Variables de entorno</a> </li> <li> 10.9 <a href="/book/es/v2/Los-entresijos-internos-de-Git-Recapitulaci%c3%b3n">Recapitulación</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Interfaces-gr%c3%a1ficas">Apéndice A: Git en otros entornos</a></h2> <ol> <li> A1.1 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Interfaces-gr%c3%a1ficas">Interfaces gráficas</a> </li> <li> A1.2 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Git-en-Visual-Studio">Git en Visual Studio</a> </li> <li> A1.3 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Git-en-Eclipse">Git en Eclipse</a> </li> <li> A1.4 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Git-con-Bash">Git con Bash</a> </li> <li> A1.5 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Git-en-Zsh">Git en Zsh</a> </li> <li> A1.6 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Git-en-Powershell">Git en Powershell</a> </li> <li> A1.7 <a href="/book/es/v2/Ap%c3%a9ndice-A:-Git-en-otros-entornos-Resumen">Resumen</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/es/v2/Ap%c3%a9ndice-B:-Integrando-Git-en-tus-Aplicaciones-Git-mediante-L%c3%adnea-de-Comandos">Apéndice B: Integrando Git en tus Aplicaciones</a></h2> <ol> <li> A2.1 <a href="/book/es/v2/Ap%c3%a9ndice-B:-Integrando-Git-en-tus-Aplicaciones-Git-mediante-L%c3%adnea-de-Comandos">Git mediante Línea de Comandos</a> </li> <li> A2.2 <a href="/book/es/v2/Ap%c3%a9ndice-B:-Integrando-Git-en-tus-Aplicaciones-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/es/v2/Ap%c3%a9ndice-B:-Integrando-Git-en-tus-Aplicaciones-JGit">JGit</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Configuraci%c3%b3n">Apéndice C: Comandos de Git</a></h2> <ol> <li> A3.1 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Configuraci%c3%b3n">Configuración</a> </li> <li> A3.2 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Obtener-y-Crear-Proyectos">Obtener y Crear Proyectos</a> </li> <li> A3.3 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Seguimiento-B%c3%a1sico">Seguimiento Básico</a> </li> <li> A3.4 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Ramificar-y-Fusionar">Ramificar y Fusionar</a> </li> <li> A3.5 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Compartir-y-Actualizar-Proyectos">Compartir y Actualizar Proyectos</a> </li> <li> A3.6 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Inspecci%c3%b3n-y-Comparaci%c3%b3n">Inspección y Comparación</a> </li> <li> A3.7 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Depuraci%c3%b3n">Depuración</a> </li> <li> A3.8 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Parcheo">Parcheo</a> </li> <li> A3.9 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Correo-Electr%c3%b3nico">Correo Electrónico</a> </li> <li> A3.10 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Sistemas-Externos">Sistemas Externos</a> </li> <li> A3.11 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Administraci%c3%b3n">Administración</a> </li> <li> A3.12 <a href="/book/es/v2/Ap%c3%a9ndice-C:-Comandos-de-Git-Comandos-de-Fontaner%c3%ada">Comandos de Fontanería</a> </li> </ol> </li> </ol> </div> </div> </div> <span class="light" id="edition"> 2nd Edition </span> </div> <div id="main" data-pagefind-filter="category:book" data-pagefind-meta="category:Book" data-pagefind-weight="0.05" data-pagefind-body class="book edition2"> <h1>10.3 Los entresijos internos de Git - Referencias Git</h1> <div> <h2 id="r_git_refs">Referencias Git</h2> <div class="paragraph"> <p>Puedes utilizar algo así como <code>git log 1a410e</code> para echar un vistazo a lo largo de toda tu historia, recorriéndola y encontrando todos tus objetos. Pero para ello has necesitado recordar que la última confirmación de cambios es <code>1a410e</code>. Necesitarías un archivo donde almacenar los valores de las sumas de comprobación SHA-1, junto con sus respectivos nombres simples que puedas utilizar como enlaces en lugar de la propia suma de comprobación.</p> </div> <div class="paragraph"> <p>En Git, esto es lo que se conoce como "referencias" o "refs"; en la carpeta <code>.git/refs</code> puedes encontrar esos archivos con valores SHA-1 y nombres . En el proyecto actual, la carpeta aún no contiene archivos, pero sí contiene una estructura simple:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ find .git/refs .git/refs .git/refs/heads .git/refs/tags $ find .git/refs -type f</code></pre> </div> </div> <div class="paragraph"> <p>Para crear una nueva referencia que te sirva de ayuda para recordar cual es tu última confirmación de cambios, puedes realizar técnicamente algo tan simple como:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ echo "1a410efbd13591db07496601ebc7a059dd55cfe9" &gt; .git/refs/heads/master</code></pre> </div> </div> <div class="paragraph"> <p>A partir de ese momento, puedes utilizar esa referencia principal que acabas de crear, en lugar del valor SHA-1, en todos tus comandos:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git log --pretty=oneline master 1a410efbd13591db07496601ebc7a059dd55cfe9 third commit cac0cab538b970a37ea1e769cbbde608743bc96d second commit fdf4fc3344e67ab068f836878b6c4951e3b15f3d first commit</code></pre> </div> </div> <div class="paragraph"> <p>No es conveniente editar directamente los archivos de referencia. Git suministra un comando mucho más seguro para hacer esto. Si necesitas actualizar una referencia, puedes utilizar el comando <code>update-ref</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git update-ref refs/heads/master 1a410efbd13591db07496601ebc7a059dd55cfe9</code></pre> </div> </div> <div class="paragraph"> <p>Esto es lo que es básicamente una rama en Git: un simple apuntador o referencia a la cabeza de una línea de trabajo. Para crear una rama hacia la segunda confirmación de cambios, puedes hacer:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git update-ref refs/heads/test cac0ca</code></pre> </div> </div> <div class="paragraph"> <p>Y la rama contendrá únicamente trabajo desde esa confirmación de cambios hacia atrás.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git log --pretty=oneline test cac0cab538b970a37ea1e769cbbde608743bc96d second commit fdf4fc3344e67ab068f836878b6c4951e3b15f3d first commit</code></pre> </div> </div> <div class="paragraph"> <p>En estos momentos, tu base de datos Git se parecerá conceptualmente a esto:</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/es/v2/images/data-model-4.png" alt="Objetos en la carpeta Git" width="con referencias a las cabeceras de las ramas."> </div> <div class="title">Figura 152. Objetos en la carpeta Git, con referencias a las cabeceras de las ramas.</div> </div> <div class="paragraph"> <p>Cuando lanzas comandos como <code>git branch (nombrederama)</code>, lo que hace Git es añadir, a cualquier nueva referencia que vayas a crear, el valor SHA-1 de la última confirmación de cambios en esa rama.</p> </div> <div class="sect3"> <h3 id="r_the_head">La CABEZA (HEAD)</h3> <div class="paragraph"> <p>Y ahora nos preguntamos, al lanzar el comando <code>git branch (nombrederama)</code>, ¿cómo sabe Git cuál es el valor SHA-1 de la última confirmación de cambios?. La respuesta a esta pregunta es el archivo HEAD (CABEZA).</p> </div> <div class="paragraph"> <p>El archivo HEAD es una referencia simbólica a la rama donde te encuentras en cada momento. Por referencia simbólica nos referimos a que, a diferencia de una referencia normal, esta contiene un enlace a otra referencia en lugar de un valor SHA-1. Si miras dentro del archivo, podrás observar algo como:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat .git/HEAD ref: refs/heads/master</code></pre> </div> </div> <div class="paragraph"> <p>Si lanzas el comando <code>git checkout test</code>, Git actualiza el contenido del archivo:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat .git/HEAD ref: refs/heads/test</code></pre> </div> </div> <div class="paragraph"> <p>Cuando lanzas una orden <code>git commit</code>, se crea un nuevo objeto de confirmación de cambios teniendo como padre la confirmación con valor SHA-1 a la que en ese momento esté apuntando la referencia en HEAD.</p> </div> <div class="paragraph"> <p>Puedes editar manualmente este archivo, pero, también para esta tarea existe un comando más seguro: <code>symbolic-ref</code>. Puedes leer el valor de HEAD a través de él:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git symbolic-ref HEAD refs/heads/master</code></pre> </div> </div> <div class="paragraph"> <p>Y también puedes cambiar el valor de HEAD a través de él:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git symbolic-ref HEAD refs/heads/test $ cat .git/HEAD ref: refs/heads/test</code></pre> </div> </div> <div class="paragraph"> <p>Pero no puedes fijar una referencia simbólica fuera de "refs":</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git symbolic-ref HEAD test fatal: Refusing to point HEAD outside of refs/</code></pre> </div> </div> </div> <div class="sect3"> <h3 id="_etiquetas">Etiquetas</h3> <div class="paragraph"> <p>Acabamos de conocer los tres principales tipos de objetos Git, pero hay un cuarto. El objeto tipo etiqueta es muy parecido al tipo confirmación de cambios, --contiene un marcador, una fecha, un mensaje y un enlace--. Su principal diferencia reside en que generalmente apunta a una confirmación de cambios (commit) en lugar de a un árbol (tree). Es como una referencia a una rama, pero permaneciendo siempre inmóvil, --apuntando siempre a la misma confirmación de cambios--, dando un nombre mas amigable a esta.</p> </div> <div class="paragraph"> <p>Tal y como se ha comentado en <a href="/book/es/v2/ch00/ch02-git-basics">[ch02-git-basics]</a>, hay dos tipos de etiquetas: las anotativas y las ligeras. Puedes crear una etiqueta ligera lanzando un comando tal como:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git update-ref refs/tags/v1.0 cac0cab538b970a37ea1e769cbbde608743bc96d</code></pre> </div> </div> <div class="paragraph"> <p>Una etiqueta ligera es simplemente eso: una referencia que nunca se mueve. Sin embargo, una etiqueta anotativa es más compleja. Al crear una etiqueta anotativa, Git crea un objeto tipo etiqueta y luego escribe una referencia apuntando a él en lugar de apuntar directamente a una confirmación de cambios. Puedes comprobarlo creando una: (la opción <code>-a</code> indica que la etiqueta es anotativa)</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git tag -a v1.1 1a410efbd13591db07496601ebc7a059dd55cfe9 -m 'test tag'</code></pre> </div> </div> <div class="paragraph"> <p>Este es el objeto SHA-1 creado:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat .git/refs/tags/v1.1 9585191f37f7b0fb9444f35a9bf50de191beadc2</code></pre> </div> </div> <div class="paragraph"> <p>Ahora, lanzando el comando <code>cat-file</code> para ese valor SHA-1:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git cat-file -p 9585191f37f7b0fb9444f35a9bf50de191beadc2 object 1a410efbd13591db07496601ebc7a059dd55cfe9 type commit tag v1.1 tagger Scott Chacon &lt;schacon@gmail.com&gt; Sat May 23 16:48:58 2009 -0700 test tag</code></pre> </div> </div> <div class="paragraph"> <p>Merece destacar que el inicio del objeto apunta al SHA-1 de la confirmación de cambios recién etiquetada. Y también el que no ha sido necesario apuntar directamente a una confirmación de cambios; realmente puedes etiquetar cualquier tipo de objeto Git. Por ejemplo, en el código fuente de Git los gestores han añadido su clave GPG pública como un objeto binario (blob) y lo han etiquetado. Puedes ver esta clave pública ejecutando esto en un clon del repositorio Git:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git cat-file blob junio-gpg-pub</code></pre> </div> </div> <div class="paragraph"> <p>El kernel de Linux tiene también un objeto tipo etiqueta apuntando a un objeto que no es una confirmación de cambios (commit). La primera etiqueta que se creó es la que apunta al árbol (tree) inicial donde se importó el código fuente.</p> </div> </div> <div class="sect3"> <h3 id="_sitios_remotos">Sitios remotos</h3> <div class="paragraph"> <p>El tercer tipo de referencia que puedes observar es la referencia a un sitio remoto. Si añades un sitio remoto y envías algo a él, Git almacenará en dicho sitio remoto el último valor para cada rama presente en la carpeta <code>refs/remotes</code>. Por ejemplo, puedes añadir un sitio remoto denominado <code>origin</code> y enviar a él tu rama <code>master</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote add origin git@github.com:schacon/simplegit-progit.git $ git push origin master Counting objects: 11, done. Compressing objects: 100% (5/5), done. Writing objects: 100% (7/7), 716 bytes, done. Total 7 (delta 2), reused 4 (delta 1) To git@github.com:schacon/simplegit-progit.git a11bef0..ca82a6d master -&gt; master</code></pre> </div> </div> <div class="paragraph"> <p>Tras lo cual puedes confirmar cual era la rama <code>master</code> en el remoto <code>origin</code> la última vez que comunicaste con el servidor, comprobando el archivo <code>refs/remotes/origin/master</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat .git/refs/remotes/origin/master ca82a6dff817ec66f44342007202690a93763949</code></pre> </div> </div> <div class="paragraph"> <p>Las referencias a sitios remotos son distintas de las ramas normales (referencias en <code>refs/heads</code>), principalmente porque se las considera de sólo lectura. Puedes hacer <code>git checkout</code> a una, pero Git no apuntará HEAD a ella, de modo que nunca la actualizarás con el comando <code>commit</code>. Git las utiliza solamente como marcadores al último estado conocido de cada rama en cada servidor remoto declarado.</p> </div> </div> <div id="nav"><a href="/book/es/v2/Los-entresijos-internos-de-Git-Los-objetos-Git">prev</a> | <a href="/book/es/v2/Los-entresijos-internos-de-Git-Archivos-empaquetadores">next</a></div> </div> </div> </div> </div> <footer> <div class="site-source"> <a href="/site">About this site</a><br> Patches, suggestions, and comments are welcome. </div> <div class="sfc-member"> Git is a member of <a href="/sfc">Software Freedom Conservancy</a> </div> </footer> <a href="#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top"> <img src="/images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/> </a> <script src="/js/jquery-1.7.1.min.js"></script> <script src="/js/jquery-ui-1.8.18.custom.min.js"></script> <script src="/js/jquery.defaultvalue.js"></script> <script src="/js/session.min.js"></script> <script src="/js/application.min.js"></script> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10