CINXE.COM
Git - Cofanie zmian
<!DOCTYPE html> <html lang="pl"> <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 - Cofanie zmian</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/progit2-pl/progit2-pl">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/pl/v2/Pierwsze-kroki-Wprowadzenie-do-kontroli-wersji">Pierwsze kroki</a></h2> <ol> <li> 1.1 <a href="/book/pl/v2/Pierwsze-kroki-Wprowadzenie-do-kontroli-wersji">Wprowadzenie do kontroli wersji</a> </li> <li> 1.2 <a href="/book/pl/v2/Pierwsze-kroki-Kr%c3%b3tka-historia-Git">Krótka historia Git</a> </li> <li> 1.3 <a href="/book/pl/v2/Pierwsze-kroki-Podstawy-Git">Podstawy Git</a> </li> <li> 1.4 <a href="/book/pl/v2/Pierwsze-kroki-Linia-polece%c5%84">Linia poleceń</a> </li> <li> 1.5 <a href="/book/pl/v2/Pierwsze-kroki-Instalacja-Git">Instalacja Git</a> </li> <li> 1.6 <a href="/book/pl/v2/Pierwsze-kroki-Wst%c4%99pna-konfiguracja-Git">Wstępna konfiguracja Git</a> </li> <li> 1.7 <a href="/book/pl/v2/Pierwsze-kroki-Uzyskiwanie-pomocy">Uzyskiwanie pomocy</a> </li> <li> 1.8 <a href="/book/pl/v2/Pierwsze-kroki-Podsumowanie">Podsumowanie</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/pl/v2/Podstawy-Gita-Pierwsze-repozytorium-Gita">Podstawy Gita</a></h2> <ol> <li> 2.1 <a href="/book/pl/v2/Podstawy-Gita-Pierwsze-repozytorium-Gita">Pierwsze repozytorium Gita</a> </li> <li> 2.2 <a href="/book/pl/v2/Podstawy-Gita-Rejestrowanie-zmian-w-repozytorium">Rejestrowanie zmian w repozytorium</a> </li> <li> 2.3 <a href="/book/pl/v2/Podstawy-Gita-Podgl%c4%85d-historii-rewizji">Podgląd historii rewizji</a> </li> <li> 2.4 <a href="/book/pl/v2/Podstawy-Gita-Cofanie-zmian" class="active">Cofanie zmian</a> </li> <li> 2.5 <a href="/book/pl/v2/Podstawy-Gita-Praca-ze-zdalnym-repozytorium">Praca ze zdalnym repozytorium</a> </li> <li> 2.6 <a href="/book/pl/v2/Podstawy-Gita-Tagowanie">Tagowanie</a> </li> <li> 2.7 <a href="/book/pl/v2/Podstawy-Gita-Aliasy">Aliasy</a> </li> <li> 2.8 <a href="/book/pl/v2/Podstawy-Gita-Podsumowanie">Podsumowanie</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Czym-jest-ga%c5%82%c4%85%c5%ba">Gałęzie Gita</a></h2> <ol> <li> 3.1 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Czym-jest-ga%c5%82%c4%85%c5%ba">Czym jest gałąź</a> </li> <li> 3.2 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Podstawy-rozga%c5%82%c4%99ziania-i-scalania">Podstawy rozgałęziania i scalania</a> </li> <li> 3.3 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Zarz%c4%85dzanie-ga%c5%82%c4%99ziami">Zarządzanie gałęziami</a> </li> <li> 3.4 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Sposoby-pracy-z-ga%c5%82%c4%99ziami">Sposoby pracy z gałęziami</a> </li> <li> 3.5 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Ga%c5%82%c4%99zie-zdalne">Gałęzie zdalne</a> </li> <li> 3.6 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Zmiana-bazy">Zmiana bazy</a> </li> <li> 3.7 <a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Podsumowanie">Podsumowanie</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/pl/v2/Git-na-serwerze-Protoko%c5%82y">Git na serwerze</a></h2> <ol> <li> 4.1 <a href="/book/pl/v2/Git-na-serwerze-Protoko%c5%82y">Protokoły</a> </li> <li> 4.2 <a href="/book/pl/v2/Git-na-serwerze-Uruchomienie-Git-na-serwerze">Uruchomienie Git na serwerze</a> </li> <li> 4.3 <a href="/book/pl/v2/Git-na-serwerze-Generowanie-Twojego-publicznego-klucza-SSH">Generowanie Twojego publicznego klucza SSH</a> </li> <li> 4.4 <a href="/book/pl/v2/Git-na-serwerze-Konfigurowanie-serwera">Konfigurowanie serwera</a> </li> <li> 4.5 <a href="/book/pl/v2/Git-na-serwerze-Git-Daemon">Git Daemon</a> </li> <li> 4.6 <a href="/book/pl/v2/Git-na-serwerze-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/pl/v2/Git-na-serwerze-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/pl/v2/Git-na-serwerze-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/pl/v2/Git-na-serwerze-Inne-opcje-hostowania-przez-podmioty-zewn%c4%99trzne">Inne opcje hostowania przez podmioty zewnętrzne</a> </li> <li> 4.10 <a href="/book/pl/v2/Git-na-serwerze-Podsumowanie">Podsumowanie</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/pl/v2/Rozproszony-Git-Rozproszone-przep%c5%82ywy-pracy">Rozproszony Git</a></h2> <ol> <li> 5.1 <a href="/book/pl/v2/Rozproszony-Git-Rozproszone-przep%c5%82ywy-pracy">Rozproszone przepływy pracy</a> </li> <li> 5.2 <a href="/book/pl/v2/Rozproszony-Git-Wgrywanie-zmian-do-projektu">Wgrywanie zmian do projektu</a> </li> <li> 5.3 <a href="/book/pl/v2/Rozproszony-Git-Utrzymywanie-projektu">Utrzymywanie projektu</a> </li> <li> 5.4 <a href="/book/pl/v2/Rozproszony-Git-Podsumowanie">Podsumowanie</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/pl/v2/GitHub-Account-Setup-and-Configuration">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/pl/v2/GitHub-Account-Setup-and-Configuration">Account Setup and Configuration</a> </li> <li> 6.2 <a href="/book/pl/v2/GitHub-Contributing-to-a-Project">Contributing to a Project</a> </li> <li> 6.3 <a href="/book/pl/v2/GitHub-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 6.4 <a href="/book/pl/v2/GitHub-Managing-an-organization">Managing an organization</a> </li> <li> 6.5 <a href="/book/pl/v2/GitHub-Scripting-GitHub">Scripting GitHub</a> </li> <li> 6.6 <a href="/book/pl/v2/GitHub-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Wskazywanie-rewizji">Narzędzia Gita</a></h2> <ol> <li> 7.1 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Wskazywanie-rewizji">Wskazywanie rewizji</a> </li> <li> 7.2 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Interaktywne-u%c5%bcywanie-przechowali">Interaktywne używanie przechowali</a> </li> <li> 7.3 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Schowek-i-czyszczenie">Schowek i czyszczenie</a> </li> <li> 7.4 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Signing-Your-Work">Signing Your Work</a> </li> <li> 7.5 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Searching">Searching</a> </li> <li> 7.6 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Przepisywanie-historii">Przepisywanie historii</a> </li> <li> 7.7 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Reset-Demystified">Reset Demystified</a> </li> <li> 7.8 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Advanced-Merging">Advanced Merging</a> </li> <li> 7.9 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Debugowanie-z-Gitem">Debugowanie z Gitem</a> </li> <li> 7.11 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Modu%c5%82y-zale%c5%bcne">Moduły zależne</a> </li> <li> 7.12 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Replace">Replace</a> </li> <li> 7.14 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Credential-Storage">Credential Storage</a> </li> <li> 7.15 <a href="/book/pl/v2/Narz%c4%99dzia-Gita-Podsumowanie">Podsumowanie</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/pl/v2/Dostosowywanie-Gita-Konfiguracja-Gita">Dostosowywanie Gita</a></h2> <ol> <li> 8.1 <a href="/book/pl/v2/Dostosowywanie-Gita-Konfiguracja-Gita">Konfiguracja Gita</a> </li> <li> 8.2 <a href="/book/pl/v2/Dostosowywanie-Gita-Git-Attributes">Git Attributes</a> </li> <li> 8.3 <a href="/book/pl/v2/Dostosowywanie-Gita-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/pl/v2/Dostosowywanie-Gita-An-Example-Git-Enforced-Policy">An Example Git-Enforced Policy</a> </li> <li> 8.5 <a href="/book/pl/v2/Dostosowywanie-Gita-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/pl/v2/Git-i-inne-systemy-Git-jako-klient">Git i inne systemy</a></h2> <ol> <li> 9.1 <a href="/book/pl/v2/Git-i-inne-systemy-Git-jako-klient">Git jako klient</a> </li> <li> 9.2 <a href="/book/pl/v2/Git-i-inne-systemy-Migracja-do-Gita">Migracja do Gita</a> </li> <li> 9.3 <a href="/book/pl/v2/Git-i-inne-systemy-Podsumowanie">Podsumowanie</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Komendy-typu-plumbing-i-porcelain">Mechanizmy wewnętrzne w Git</a></h2> <ol> <li> 10.1 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Komendy-typu-plumbing-i-porcelain">Komendy typu plumbing i porcelain</a> </li> <li> 10.2 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Obiekty-Gita">Obiekty Gita</a> </li> <li> 10.3 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Referencje-w-Git">Referencje w Git</a> </li> <li> 10.4 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Spakowane-pliki-packfiles">Spakowane pliki (packfiles)</a> </li> <li> 10.5 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Refspec">Refspec</a> </li> <li> 10.6 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Protoko%c5%82y-transferu">Protokoły transferu</a> </li> <li> 10.7 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Konserwacja-i-odzyskiwanie-danych">Konserwacja i odzyskiwanie danych</a> </li> <li> 10.8 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Environment-Variables">Environment Variables</a> </li> <li> 10.9 <a href="/book/pl/v2/Mechanizmy-wewn%c4%99trzne-w-Git-Podsumowanie">Podsumowanie</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces">Appendix A: Git in Other Environments</a></h2> <ol> <li> A1.1 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces">Graphical Interfaces</a> </li> <li> A1.2 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Eclipse">Git in Eclipse</a> </li> <li> A1.4 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash">Git in Bash</a> </li> <li> A1.5 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.6 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Powershell">Git in Powershell</a> </li> <li> A1.7 <a href="/book/pl/v2/Appendix-A:-Git-in-Other-Environments-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/pl/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/pl/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Command-line Git</a> </li> <li> A2.2 <a href="/book/pl/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/pl/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit">JGit</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/pl/v2/Appendix-C:-Git-Commands-Setup-and-Config">Appendix C: Git Commands</a></h2> <ol> <li> A3.1 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Setup-and-Config">Setup and Config</a> </li> <li> A3.2 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects">Getting and Creating Projects</a> </li> <li> A3.3 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Basic Snapshotting</a> </li> <li> A3.4 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Branching-and-Merging">Branching and Merging</a> </li> <li> A3.5 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects">Sharing and Updating Projects</a> </li> <li> A3.6 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison">Inspection and Comparison</a> </li> <li> A3.7 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Patching">Patching</a> </li> <li> A3.9 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Email">Email</a> </li> <li> A3.10 <a href="/book/pl/v2/Appendix-C:-Git-Commands-External-Systems">External Systems</a> </li> <li> A3.11 <a href="/book/pl/v2/Appendix-C:-Git-Commands-Administration">Administration</a> </li> <li> A3.12 <a href="/book/pl/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 Podstawy Gita - Cofanie zmian</h1> <div> <h2 id="_undoing">Cofanie zmian</h2> <div class="paragraph"> <p>W każdym momencie może zajść potrzeba cofnięcia jakiejś zmiany. Poniżej przyjrzymy się kilku podstawowym funkcjom cofającym modyfikacje. Bądź ostrożny, ponieważ nie wszystkie cofnięcia można odwrócić. Jest to jedno z niewielu miejsc Gita, w których należy być naprawdę ostrożnym, gdyż można stracić bezpowrotnie część pracy.</p> </div> <div class="paragraph"> <p>Jeden z częstych przypadków to zbyt pochopne wykonanie rewizji i pominięcie w niej części plików, lub też pomyłka w notce do zmian. Jeśli chcesz poprawić wcześniejszą, błędną rewizję, wystarczy uruchomić git commit raz jeszcze, tym razem, z opcją <code>--amend</code> (popraw):</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>Polecenie bierze zawartość poczekalni i zatwierdza jako dodatkowe zmiany. Jeśli niczego nie zmieniłeś od ostatniej rewizji (np. uruchomiłeś polecenie zaraz po poprzednim zatwierdzeniu zmian) wówczas twoja migawka się nie zmieni ale będziesz miał możliwość modyfikacji notki.</p> </div> <div class="paragraph"> <p>Jak zwykle zostanie uruchomiony edytor z załadowaną treścią poprzedniego komentarza. Edycja przebiega dokładnie tak samo jak zawsze, z tą różnicą, że na końcu zostanie nadpisana oryginalna treść notki.</p> </div> <div class="paragraph"> <p>Czas na przykład. Zatwierdziłeś zmiany a następnie zdałeś sobie sprawę, że zapomniałeś dodać do poczekalni pliku, który chciałeś oryginalnie umieścić w wykonanej rewizji. Wystarczy, że wykonasz następujące polecenie:</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>Wszystkie trzy polecenia zakończą się jedną rewizją - druga operacja commit zastąpi wynik pierwszej.</p> </div> <div class="sect3"> <h3 id="_unstaging">Usuwanie pliku z poczekalni</h3> <div class="paragraph"> <p>Następne dwie sekcje pokazują jak zarządzać poczekalnią i zmianami w katalogu roboczym. Dobra wiadomość jest taka, że polecenie używane do określenia stanu obu obszarów przypomina samo jak cofnąć wprowadzone w nich zmiany. Na przykład, powiedzmy, że zmieniłeś dwa pliki i chcesz teraz zatwierdzić je jako dwie osobne rewizje, ale odruchowo wpisałeś <code>git add *</code> co spowodowało umieszczenie obu plików w poczekalni. Jak w takiej sytuacji usunąć stamtąd jeden z nich? Polecenie <code>git status</code> przypomni ci, że:</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>Tekst znajdujący się zaraz pod nagłówkiem “Changes to be committed” mówi "użyj <code>git reset HEAD <plik>...</code> żeby usunąć plik z poczekalni. Nie pozostaje więc nic innego jak zastosować się do porady i zastosować ją na pliku <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>Polecenie wygląda odrobinę dziwacznie, ale działa. Plik <code>CONTRIBUTING.md</code> ciągle zawiera wprowadzone modyfikacje ale nie znajduje się już w poczekalni.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Uwaga</div> </td> <td class="content"> <div class="paragraph"> <p>W chwili gdy wywołasz polecenie <code>git reset</code> z opcją <code>--hard</code> <em>może</em> być ono niebezpieczne, ale w tym przypadku plik z katalogu roboczego pozostaje nietknięty. Wywołanie <code>git reset</code> bez opcji jest bezpieczne - dotyczy tylko poczekalni.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>W tej chwili ta "magiczna inwokacja" jest wszystkim co powineneś wiedzieć na temat polecenia <code>git reset</code>. Zagłębimy się w szczegóły co robi polecenie <code>reset</code> oraz jak używać go do robienia naprawdę ciekawych rzeczy w rozdziale <a href="/book/pl/v2/ch00/_git_reset">Reset Demystified</a>.</p> </div> </div> <div class="sect3"> <h3 id="_cofanie_zmian_w_zmodyfikowanym_pliku">Cofanie zmian w zmodyfikowanym pliku</h3> <div class="paragraph"> <p>Co jeśli okaże się, że nie chcesz jednak zatrzymać zmian wykonanych w pliku <code>CONTRIBUTING.md</code>? W jaki sposób łatwo cofnąć wprowadzone modyfikacje czyli przywrócić plik do stanu w jakim był po ostatniej rewizji (lub początkowym sklonowaniu, lub jakkolwiek dostał się do katalogu roboczego)? Z pomocą przybywa raz jeszcze polecenie <code>git status</code>. W ostatnim przykładzie, pliki będące poza poczekalnią wyglądają następująco:</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>Git konkretnie wskazuje jak pozbyć się dokonanych zmian. Zróbmy zatem co każe Git:</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>Możesz teraz przeczytać, że zmiany zostały cofnięte.</p> </div> <div class="admonitionblock important"> <table> <tr> <td class="icon"> <div class="title">Ważne</div> </td> <td class="content"> <div class="paragraph"> <p>Powinieneś sobie już także zdawać sprawę, że polecenie <code>git checkout -- [file]</code> jest dość niebezpieczne: wszelkie zmiany jakie wykonałeś w pliku przepadają - w rzeczy samej został on nadpisany poprzednią wersją. Nigdy nie używaj tego polecenia dopóki nie jesteś absolutnie pewny, że nie chcesz i nie potrzebujesz już danego pliku.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Jeśli jedynie chcesz się go chwilowo pozbyć przyjrzymy się specjalnemu poleceniu schowka (stash) oraz gałęziom w <a href="/book/pl/v2/ch00/_git_branching">Gałęzie Gita</a> - są to generalnie znacznie lepsze sposoby.</p> </div> <div class="paragraph"> <p>Pamiętaj, że wszystko co <em>zatwierdzasz</em> do repozytorium Gita może zostać w niemalże dowolnym momencie odtworzone. Nawet rewizje, które znajdowały się w usuniętych gałęziach, albo rewizje nadpisane zatwierdzeniem poprawiającym <code>--amend</code> mogą być odtworzone (odzyskiwanie danych opisujemy w <a href="/book/pl/v2/ch00/_data_recovery">Odzyskiwanie danych</a>). Jednakże, cokolwiek utraciłeś a nie było to nigdy wcześniej zatwierdzane do repozytorium, prawdopodobnie odeszło na zawsze.</p> </div> </div> <div id="nav"><a href="/book/pl/v2/Podstawy-Gita-Podgląd-historii-rewizji">prev</a> | <a href="/book/pl/v2/Podstawy-Gita-Praca-ze-zdalnym-repozytorium">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>