CINXE.COM
Git - Desfazendo coisas
<!DOCTYPE html> <html lang="pt-br"> <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 - Desfazendo coisas</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-pt-br">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/pt-br/v2/Come%c3%a7ando-Sobre-Controle-de-Vers%c3%a3o">Começando</a></h2> <ol> <li> 1.1 <a href="/book/pt-br/v2/Come%c3%a7ando-Sobre-Controle-de-Vers%c3%a3o">Sobre Controle de Versão</a> </li> <li> 1.2 <a href="/book/pt-br/v2/Come%c3%a7ando-Uma-Breve-Hist%c3%b3ria-do-Git">Uma Breve História do Git</a> </li> <li> 1.3 <a href="/book/pt-br/v2/Come%c3%a7ando-O-B%c3%a1sico-do-Git">O Básico do Git</a> </li> <li> 1.4 <a href="/book/pt-br/v2/Come%c3%a7ando-A-Linha-de-Comando">A Linha de Comando</a> </li> <li> 1.5 <a href="/book/pt-br/v2/Come%c3%a7ando-Instalando-o-Git">Instalando o Git</a> </li> <li> 1.6 <a href="/book/pt-br/v2/Come%c3%a7ando-Configura%c3%a7%c3%a3o-Inicial-do-Git">Configuração Inicial do Git</a> </li> <li> 1.7 <a href="/book/pt-br/v2/Come%c3%a7ando-Pedindo-Ajuda">Pedindo Ajuda</a> </li> <li> 1.8 <a href="/book/pt-br/v2/Come%c3%a7ando-Sum%c3%a1rio">Sumário</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/pt-br/v2/Fundamentos-de-Git-Obtendo-um-Reposit%c3%b3rio-Git">Fundamentos de Git</a></h2> <ol> <li> 2.1 <a href="/book/pt-br/v2/Fundamentos-de-Git-Obtendo-um-Reposit%c3%b3rio-Git">Obtendo um Repositório Git</a> </li> <li> 2.2 <a href="/book/pt-br/v2/Fundamentos-de-Git-Gravando-Altera%c3%a7%c3%b5es-em-Seu-Reposit%c3%b3rio">Gravando Alterações em Seu Repositório</a> </li> <li> 2.3 <a href="/book/pt-br/v2/Fundamentos-de-Git-Vendo-o-hist%c3%b3rico-de-Commits">Vendo o histórico de Commits</a> </li> <li> 2.4 <a href="/book/pt-br/v2/Fundamentos-de-Git-Desfazendo-coisas" class="active">Desfazendo coisas</a> </li> <li> 2.5 <a href="/book/pt-br/v2/Fundamentos-de-Git-Trabalhando-de-Forma-Remota">Trabalhando de Forma Remota</a> </li> <li> 2.6 <a href="/book/pt-br/v2/Fundamentos-de-Git-Criando-Tags">Criando Tags</a> </li> <li> 2.7 <a href="/book/pt-br/v2/Fundamentos-de-Git-Apelidos-Git">Apelidos Git</a> </li> <li> 2.8 <a href="/book/pt-br/v2/Fundamentos-de-Git-Sum%c3%a1rio">Sumário</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/pt-br/v2/Branches-no-Git-Branches-em-poucas-palavras">Branches no Git</a></h2> <ol> <li> 3.1 <a href="/book/pt-br/v2/Branches-no-Git-Branches-em-poucas-palavras">Branches em poucas palavras</a> </li> <li> 3.2 <a href="/book/pt-br/v2/Branches-no-Git-O-b%c3%a1sico-de-Ramifica%c3%a7%c3%a3o-Branch-e-Mesclagem-Merge">O básico de Ramificação (Branch) e Mesclagem (Merge)</a> </li> <li> 3.3 <a href="/book/pt-br/v2/Branches-no-Git-Gest%c3%a3o-de-Branches">Gestão de Branches</a> </li> <li> 3.4 <a href="/book/pt-br/v2/Branches-no-Git-Fluxo-de-Branches">Fluxo de Branches</a> </li> <li> 3.5 <a href="/book/pt-br/v2/Branches-no-Git-Branches-remotos">Branches remotos</a> </li> <li> 3.6 <a href="/book/pt-br/v2/Branches-no-Git-Rebase">Rebase</a> </li> <li> 3.7 <a href="/book/pt-br/v2/Branches-no-Git-Sum%c3%a1rio">Sumário</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/pt-br/v2/Git-no-servidor-Os-Protocolos">Git no servidor</a></h2> <ol> <li> 4.1 <a href="/book/pt-br/v2/Git-no-servidor-Os-Protocolos">Os Protocolos</a> </li> <li> 4.2 <a href="/book/pt-br/v2/Git-no-servidor-Getting-Git-on-a-Server">Getting Git on a Server</a> </li> <li> 4.3 <a href="/book/pt-br/v2/Git-no-servidor-Gerando-Sua-Chave-P%c3%bablica-SSH">Gerando Sua Chave Pública SSH</a> </li> <li> 4.4 <a href="/book/pt-br/v2/Git-no-servidor-Setting-Up-the-Server">Setting Up the Server</a> </li> <li> 4.5 <a href="/book/pt-br/v2/Git-no-servidor-Git-Daemon">Git Daemon</a> </li> <li> 4.6 <a href="/book/pt-br/v2/Git-no-servidor-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/pt-br/v2/Git-no-servidor-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/pt-br/v2/Git-no-servidor-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/pt-br/v2/Git-no-servidor-Third-Party-Hosted-Options">Third Party Hosted Options</a> </li> <li> 4.10 <a href="/book/pt-br/v2/Git-no-servidor-Sum%c3%a1rio">Sumário</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/pt-br/v2/Distributed-Git-Fluxos-de-Trabalho-Distribu%c3%addos">Distributed Git</a></h2> <ol> <li> 5.1 <a href="/book/pt-br/v2/Distributed-Git-Fluxos-de-Trabalho-Distribu%c3%addos">Fluxos de Trabalho Distribuídos</a> </li> <li> 5.2 <a href="/book/pt-br/v2/Distributed-Git-Contribuindo-com-um-Projeto">Contribuindo com um Projeto</a> </li> <li> 5.3 <a href="/book/pt-br/v2/Distributed-Git-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 5.4 <a href="/book/pt-br/v2/Distributed-Git-Summary">Summary</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/pt-br/v2/GitHub-Configurando-uma-conta">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/pt-br/v2/GitHub-Configurando-uma-conta">Configurando uma conta</a> </li> <li> 6.2 <a href="/book/pt-br/v2/GitHub-Contribuindo-em-um-projeto">Contribuindo em um projeto</a> </li> <li> 6.3 <a href="/book/pt-br/v2/GitHub-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 6.4 <a href="/book/pt-br/v2/GitHub-Managing-an-organization">Managing an organization</a> </li> <li> 6.5 <a href="/book/pt-br/v2/GitHub-Scripting-GitHub">Scripting GitHub</a> </li> <li> 6.6 <a href="/book/pt-br/v2/GitHub-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/pt-br/v2/Git-Tools-Revision-Selection">Git Tools</a></h2> <ol> <li> 7.1 <a href="/book/pt-br/v2/Git-Tools-Revision-Selection">Revision Selection</a> </li> <li> 7.2 <a href="/book/pt-br/v2/Git-Tools-Interactive-Staging">Interactive Staging</a> </li> <li> 7.3 <a href="/book/pt-br/v2/Git-Tools-Stashing-and-Cleaning">Stashing and Cleaning</a> </li> <li> 7.4 <a href="/book/pt-br/v2/Git-Tools-Signing-Your-Work">Signing Your Work</a> </li> <li> 7.5 <a href="/book/pt-br/v2/Git-Tools-Searching">Searching</a> </li> <li> 7.6 <a href="/book/pt-br/v2/Git-Tools-Rewriting-History">Rewriting History</a> </li> <li> 7.7 <a href="/book/pt-br/v2/Git-Tools-Reset-Demystified">Reset Demystified</a> </li> <li> 7.8 <a href="/book/pt-br/v2/Git-Tools-Advanced-Merging">Advanced Merging</a> </li> <li> 7.9 <a href="/book/pt-br/v2/Git-Tools-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/pt-br/v2/Git-Tools-Debugging-with-Git">Debugging with Git</a> </li> <li> 7.11 <a href="/book/pt-br/v2/Git-Tools-Submodules">Submodules</a> </li> <li> 7.12 <a href="/book/pt-br/v2/Git-Tools-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/pt-br/v2/Git-Tools-Replace">Replace</a> </li> <li> 7.14 <a href="/book/pt-br/v2/Git-Tools-Credential-Storage">Credential Storage</a> </li> <li> 7.15 <a href="/book/pt-br/v2/Git-Tools-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/pt-br/v2/Customizing-Git-Git-Configuration">Customizing Git</a></h2> <ol> <li> 8.1 <a href="/book/pt-br/v2/Customizing-Git-Git-Configuration">Git Configuration</a> </li> <li> 8.2 <a href="/book/pt-br/v2/Customizing-Git-Git-Attributes">Git Attributes</a> </li> <li> 8.3 <a href="/book/pt-br/v2/Customizing-Git-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/pt-br/v2/Customizing-Git-An-Example-Git-Enforced-Policy">An Example Git-Enforced Policy</a> </li> <li> 8.5 <a href="/book/pt-br/v2/Customizing-Git-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/pt-br/v2/Git-and-Other-Systems-Git-as-a-Client">Git and Other Systems</a></h2> <ol> <li> 9.1 <a href="/book/pt-br/v2/Git-and-Other-Systems-Git-as-a-Client">Git as a Client</a> </li> <li> 9.2 <a href="/book/pt-br/v2/Git-and-Other-Systems-Migrating-to-Git">Migrating to Git</a> </li> <li> 9.3 <a href="/book/pt-br/v2/Git-and-Other-Systems-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Encanamento-e-Porcelana">Funcionamento Interno do Git</a></h2> <ol> <li> 10.1 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Encanamento-e-Porcelana">Encanamento e Porcelana</a> </li> <li> 10.2 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Objetos-do-Git">Objetos do Git</a> </li> <li> 10.3 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Refer%c3%aancias-do-Git">Referências do Git</a> </li> <li> 10.4 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Packfiles">Packfiles</a> </li> <li> 10.5 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-The-Refspec">The Refspec</a> </li> <li> 10.6 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Transfer-Protocols">Transfer Protocols</a> </li> <li> 10.7 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Maintenance-and-Data-Recovery">Maintenance and Data Recovery</a> </li> <li> 10.8 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Vari%c3%a1veis-de-ambiente">Variáveis de ambiente</a> </li> <li> 10.9 <a href="/book/pt-br/v2/Funcionamento-Interno-do-Git-Sum%c3%a1rio">Sumário</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Graphical-Interfaces">Appendix A: Git em Outros Ambientes</a></h2> <ol> <li> A1.1 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Graphical-Interfaces">Graphical Interfaces</a> </li> <li> A1.2 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Git-in-Eclipse">Git in Eclipse</a> </li> <li> A1.4 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Git-in-Bash">Git in Bash</a> </li> <li> A1.5 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.6 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Git-in-Powershell">Git in Powershell</a> </li> <li> A1.7 <a href="/book/pt-br/v2/Appendix-A:-Git-em-Outros-Ambientes-Resumo">Resumo</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/pt-br/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Appendix B: Embedding Git in your Applications</a></h2> <ol> <li> A2.1 <a href="/book/pt-br/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Command-line Git</a> </li> <li> A2.2 <a href="/book/pt-br/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/pt-br/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit">JGit</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Setup-and-Config">Appendix C: Git Commands</a></h2> <ol> <li> A3.1 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Setup-and-Config">Setup and Config</a> </li> <li> A3.2 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects">Getting and Creating Projects</a> </li> <li> A3.3 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Basic Snapshotting</a> </li> <li> A3.4 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Branching-and-Merging">Branching and Merging</a> </li> <li> A3.5 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects">Sharing and Updating Projects</a> </li> <li> A3.6 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison">Inspection and Comparison</a> </li> <li> A3.7 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Patching">Patching</a> </li> <li> A3.9 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Email">Email</a> </li> <li> A3.10 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-External-Systems">External Systems</a> </li> <li> A3.11 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Administration">Administration</a> </li> <li> A3.12 <a href="/book/pt-br/v2/Appendix-C:-Git-Commands-Plumbing-Commands">Plumbing Commands</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 - Desfazendo coisas</h1> <div> <h2 id="r_undoing">Desfazendo coisas</h2> <div class="paragraph"> <p>Em qualquer estágio, você talvez queira desfazer algo. Aqui, vamos rever algumas ferramentas básicas para desfazer modificações que porventura tenha feito. Seja cuidadoso, porque nem sempre você pode voltar uma alteração desfeita. Essa é uma das poucas áreas do Git onde pode perder algum trabalho feito se você cometer algum engano.</p> </div> <div class="paragraph"> <p>Um dos motivos mais comuns para desfazer um comando, aparece quando você executa um commit muito cedo e possivelmente esquecendo de adicionar alguns arquivos ou você escreveu a mensagem do commit de forma equivocada. Se você quiser refazer este commit, execute o commit novamente usando a opção <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>Esse comando pega a área stage e a usa para realizar o commit. Se você não fez nenhuma alteração desde o último commit (por exemplo, se você executar o comando imediatamente depois do commit anterior), então sua imagem dos arquivos irá ser exatamente a mesma, e tudo o que você alterará será a mensagem do commit.</p> </div> <div class="paragraph"> <p>O mesmo editor de mensagens de commit é acionado, porém o commit anterior já possui uma mensagem. Você pode editar a mensagem como sempre, porém esta sobrescreve a mensagem do commit anterior.</p> </div> <div class="paragraph"> <p>Por exemplo, se você fizer um commit e então lembrar que esqueceu de colocar no stage as modificações de um arquivo que você quer adicionar no commit, você pode fazer algo semelhante a isto:</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>No final das contas você termina com um único commit – O segundo commit substitui o resultante do primeiro.</p> </div> <div class="sect3"> <h3 id="r_unstaging">Retirando um arquivo do Stage</h3> <div class="paragraph"> <p>A próxima sessão demonstra como trabalhar com modificações na área stage e work directory. A boa notícia é que o comando que você usa para verificar o estado dessas duas áreas, também te relembra como desfazer as modificações aplicadas. Por exemplo, vamos supor que você alterou dois arquivos, e deseja realizar o commit deles separadamente, porém você acidentalmente digitou <code>git add *</code> adicionando ambos ao stage. Como você pode retirar um deles do stage? O comando <code>git status</code> lhe lembrará de como fazer isso:</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>Logo abaixo do texto “Changes to be committed”, diz <code>git reset HEAD <file>...</code> para retirar o arquivo do stage. Então, vamos usar esta sugestão para retirar o arquivo <code>CONTRIBUTING.md</code> do stage:</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>O comando é um tanto quanto estranho, mas funciona. O arquivo <code>CONTRIBUTING.md</code> volta ao estado modificado porem está novamente fora do stage.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Note</div> </td> <td class="content"> <div class="paragraph"> <p>É verdade que o comando <code>git reset</code> pode ser perigoso, especialmente se você usar a opção <code>--hard</code>. Entretanto, no cenário descrito acima, o arquivo no working directory está inalterado, então é relativamente seguro utilizar o comando.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Essa mágica usando o <code>git reset</code> é tudo que você precisa saber por enquanto sobre este comando. Nós vamos entra mais no detalhe sobre o que o comando <code>reset</code> faz e como usá-lo de forma a fazer coisas realmente interessantes em <a href="/book/pt-br/v2/ch00/r_git_reset">Reset Demystified</a>.</p> </div> </div> <div class="sect3"> <h3 id="_desfazendo_as_modificações_de_um_arquivo">Desfazendo as Modificações de um Arquivo</h3> <div class="paragraph"> <p>E se você se der conta de que na verdade não quer manter as modificações do arquivo <code>CONTRIBUTING.md</code>? Como você pode reverter as modificações, voltando a ser como era quando foi realizado o último commit (ou clone inicial, ou seja como for que você chegou ao seu working directory)? Felizmente, <code>git status</code> diz a você como fazer isso também. Neste último exemplo, a área fora do stage parece com isso:</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>Isso lhe diz de forma explicita como descartar as modificações que você fez. Vamos fazer o que o comando nos sugeriu:</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>Você pode notar que as modificações foram revertidas.</p> </div> <div class="admonitionblock important"> <table> <tr> <td class="icon"> <div class="title">Important</div> </td> <td class="content"> <div class="paragraph"> <p>É importante entender que o <code>git checkout -- <file></code> é um a comando perigoso. Qualquer modificação que você fez no arquivo se foi — O Git apenas substitui o arquivo pela última versão (mais recente) que sofreu commit. Nunca use este comando a não ser que você saiba com certeza que não quer salvar as modificações do arquivo.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Se você gostaria de manter as modificações que fez no arquivo, porem precisa tirá-lo do caminho por enquanto, sugerimos que pule para a documentação sobre Branches<a href="/book/pt-br/v2/ch00/ch03-git-branching">[ch03-git-branching]</a>; esta geralmente é a melhor forma de fazer isso.</p> </div> <div class="paragraph"> <p>Lembre-se, qualquer coisa que sobre commit com Git pode quase sempre ser recuperada. Até mesmo commits que estava em algum branches que foram deletados ou commits que forma sobre escritos através de um <code>--amend</code> podem ser recuperados (veja<a href="/book/pt-br/v2/ch00/r_data_recovery">Data Recovery</a> para recuperação de dados). Contudo, qualquer coisa que você perder que nunca sofreu commit pode ser considerada praticamente perdida.</p> </div> </div> <div id="nav"><a href="/book/pt-br/v2/Fundamentos-de-Git-Vendo-o-histórico-de-Commits">prev</a> | <a href="/book/pt-br/v2/Fundamentos-de-Git-Trabalhando-de-Forma-Remota">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>