CINXE.COM
Git - Deshacer Cosas
<!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 - Deshacer Cosas</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-Basics-Undoing-Things">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-L%c9%99%c4%9fv-Edil%c9%99n-%c4%b0%c5%9fl%c9%99r-Geri-qaytar%c4%b1lan">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-%d0%bd%d0%b0-Git-%d0%92%d1%8a%d0%b7%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d1%8f%d0%b2%d0%b0%d0%bd%d0%b5-%d0%bd%d0%b0-%d0%bd%d0%b0%d0%bf%d1%80%d0%b0%d0%b2%d0%b5%d0%bd%d0%b8-%d0%b4%d0%b5%d0%b9%d1%81%d1%82%d0%b2%d0%b8%d1%8f">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-Grundlagen-Ungewollte-%c3%84nderungen-r%c3%bcckg%c3%a4ngig-machen">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Fundamentos-de-Git-Deshacer-Cosas">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Les-bases-de-Git-Annuler-des-actions">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%9f%ba%e6%9c%ac-%e4%bd%9c%e6%a5%ad%e3%81%ae%e3%82%84%e3%82%8a%e7%9b%b4%e3%81%97">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%eb%90%98%eb%8f%8c%eb%a6%ac%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-Basics-Dingen-ongedaan-maken">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d1%8b-Git-%d0%9e%d0%bf%d0%b5%d1%80%d0%b0%d1%86%d0%b8%d0%b8-%d0%be%d1%82%d0%bc%d0%b5%d0%bd%d1%8b">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Osnove-Git-Razveljavljanje-stvari">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pag-Undo-ng-mga-Bagay">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%a1%d0%ba%d0%b0%d1%81%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%80%d0%b5%d1%87%d0%b5%d0%b9">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/Git-%e5%9f%ba%e7%a1%80-%e6%92%a4%e6%b6%88%e6%93%8d%e4%bd%9c">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-N%c3%a1vrat-do-p%c5%99edchoz%c3%adho-stavu">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d0%b5-%d0%bd%d0%b0-Git-%d0%9f%d0%be%d0%bd%d0%b8%d1%88%d1%82%d1%83%d0%b2%d0%b0%d1%9a%d0%b5-%d0%bd%d0%b0-%d0%bd%d0%b5%d1%88%d1%82%d0%b0%d1%82%d0%b0">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Podstawy-Gita-Cofanie-zmian">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%b0-%d0%93%d0%b8%d1%82-%d0%9e%d0%bf%d0%be%d0%b7%d0%b8%d0%b2">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-%d0%b0%d1%81%d0%be%d1%81%d0%bb%d0%b0%d1%80%d0%b8-%d0%8e%d0%b7%d0%b3%d0%b0%d1%80%d0%b8%d1%88%d0%bb%d0%b0%d1%80%d0%bd%d0%b8-%d0%b1%d0%b5%d0%ba%d0%be%d1%80-%d2%9b%d0%b8%d0%bb%d0%b8%d1%88">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/Git-%e5%9f%ba%e7%a4%8e-%e5%be%a9%e5%8e%9f">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-Basics-Undoing-Things">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/%d9%85%d9%82%d8%af%d9%85%d8%a7%d8%aa-%da%af%db%8c%d8%aa-%d8%a8%d8%a7%d8%b2%da%af%d8%b1%d8%af%d8%a7%d9%86%db%8c-%da%a9%d8%a7%d8%b1%d9%87%d8%a7" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-Basics-Undoing-Things">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-Basics-Undoing-Things">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-Basics-Undoing-Things">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Fundamentos-de-Git-Desfazendo-coisas">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/No%c3%a7%c3%b5es-B%c3%a1sicas-do-Git-Desfazer-Coisas">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Grunder-i-Git-%c3%85ngra-saker">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git-Temelleri-De%c4%9fi%c5%9fiklikleri-Geri-Alma">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" class="active">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">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>2.4 Fundamentos de Git - Deshacer Cosas</h1> <div> <h2 id="r_undoing">Deshacer Cosas</h2> <div class="paragraph"> <p>En cualquier momento puede que quieras deshacer algo. Aquí repasaremos algunas herramientas básicas usadas para deshacer cambios que hayas hecho. Ten cuidado, a veces no es posible recuperar algo luego que lo has deshecho. Esta es una de las pocas áreas en las que Git puede perder parte de tu trabajo si cometes un error.</p> </div> <div class="paragraph"> <p>Uno de las acciones más comunes a deshacer es cuando confirmas un cambio antes de tiempo y olvidas agregar algún archivo, o te equivocas en el mensaje de confirmación. Si quieres rehacer la confirmación, puedes reconfirmar con la opción <code>--amend</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git commit --amend</code></pre> </div> </div> <div class="paragraph"> <p>Este comando utiliza tu área de preparación para la confirmación. Si no has hecho cambios desde tu última confirmación (por ejemplo, ejecutas este comando justo después de tu confirmación anterior), entonces la instantánea lucirá exactamente igual y lo único que cambiarás será el mensaje de confirmación.</p> </div> <div class="paragraph"> <p>Se lanzará el mismo editor de confirmación, pero verás que ya incluye el mensaje de tu confirmación anterior. Puedes editar el mensaje como siempre y se sobreescribirá tu confirmación anterior.</p> </div> <div class="paragraph"> <p>Por ejemplo, si confirmas y luego te das cuenta que olvidaste preparar los cambios de un archivo que querías incluir en esta confirmación, puedes hacer lo siguiente:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend</code></pre> </div> </div> <div class="paragraph"> <p>Al final terminarás con una sola confirmación - la segunda confirmación reemplaza el resultado de la primera.</p> </div> <div class="sect3"> <h3 id="r_unstaging">Deshacer un Archivo Preparado</h3> <div class="paragraph"> <p>Las siguientes dos secciones demuestran cómo lidiar con los cambios de tu área de preparación y tú directorio de trabajo. Afortunadamente, el comando que usas para determinar el estado de esas dos áreas también te recuerda cómo deshacer los cambios en ellas. Por ejemplo, supongamos que has cambiado dos archivos y que quieres confirmarlos como dos cambios separados, pero accidentalmente has escrito <code>git add *</code> y has preparado ambos. ¿Cómo puedes sacar del área de preparación uno de ellos? El comando <code>git status</code> te recuerda cómo:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git add . $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> README modified: CONTRIBUTING.md</code></pre> </div> </div> <div class="paragraph"> <p>Justo debajo del texto “Changes to be committed” (“Cambios a ser confirmados”, en inglés), verás que dice que uses <code>git reset HEAD <file>...</code> para deshacer la preparación. Por lo tanto, usemos el consejo para deshacer la preparación del archivo <code>CONTRIBUTING.md</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git reset HEAD CONTRIBUTING.md Unstaged changes after reset: M CONTRIBUTING.md $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> README Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: CONTRIBUTING.md</code></pre> </div> </div> <div class="paragraph"> <p>El comando es un poco raro, pero funciona. El archivo <code>CONTRIBUTING.md</code> esta modificado y, nuevamente, no preparado.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Nota</div> </td> <td class="content"> <div class="paragraph"> <p><code>git reset</code> puede ser un comando peligroso, especialmente si lo llamas con la opción <code>--hard</code>. Sin embargo, en el escenario descrito anteriormente, el archivo que está en tu directorio de trabajo no se toca, por lo que es relativamente seguro.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Por ahora lo único que necesitas saber sobre el comando <code>git reset</code> es esta invocación mágica. Entraremos en mucho más detalle sobre qué hace <code>reset</code> y cómo dominarlo para que haga cosas realmente interesantes en <a href="/book/es/v2/ch00/r_git_reset">Reiniciar Desmitificado</a>.</p> </div> </div> <div class="sect3"> <h3 id="_deshacer_un_archivo_modificado">Deshacer un Archivo Modificado</h3> <div class="paragraph"> <p>¿Qué tal si te das cuenta que no quieres mantener los cambios del archivo <code>CONTRIBUTING.md</code>? ¿Cómo puedes restaurarlo fácilmente - volver al estado en el que estaba en la última confirmación (o cuando estaba recién clonado, o como sea que haya llegado a tu directorio de trabajo)? Afortunadamente, <code>git status</code> también te dice cómo hacerlo. En la salida anterior, el área no preparada lucía así:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: CONTRIBUTING.md</code></pre> </div> </div> <div class="paragraph"> <p>Allí se te indica explícitamente como descartar los cambios que has hecho. Hagamos lo que nos dice:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout -- CONTRIBUTING.md $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) renamed: README.md -> README</code></pre> </div> </div> <div class="paragraph"> <p>Ahora puedes ver que los cambios se han revertido.</p> </div> <div class="admonitionblock important"> <table> <tr> <td class="icon"> <div class="title">Importante</div> </td> <td class="content"> <div class="paragraph"> <p>Es importante entender que <code>git checkout -- [archivo]</code> es un comando peligroso. Cualquier cambio que le hayas hecho a ese archivo desaparecerá - acabas de sobreescribirlo con otro archivo. Nunca utilices este comando a menos que estés absolutamente seguro de que ya no quieres el archivo.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Para mantener los cambios que has hecho y a la vez deshacerte del archivo temporalmente, hablaremos sobre cómo esconder archivos (<em>stashing</em>, en inglés) y sobre ramas en <a href="/book/es/v2/ch00/ch03-git-branching">[ch03-git-branching]</a>; normalmente, estas son las mejores maneras de hacerlo.</p> </div> <div class="paragraph"> <p>Recuerda, todo lo que esté <em>confirmado</em> en Git puede recuperarse. Incluso <em>commits</em> que estuvieron en ramas que han sido eliminadas o <em>commits</em> que fueron sobreescritos con <code>--amend</code> pueden recuperarse (véase <a href="/book/es/v2/ch00/r_data_recovery">Recuperación de datos</a> para recuperación de datos). Sin embargo, es posible que no vuelvas a ver jamás cualquier cosa que pierdas y que nunca haya sido confirmada.</p> </div> </div> <div id="nav"><a href="/book/es/v2/Fundamentos-de-Git-Ver-el-Historial-de-Confirmaciones">prev</a> | <a href="/book/es/v2/Fundamentos-de-Git-Trabajar-con-Remotos">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>