CINXE.COM
Git - Rerere
<!DOCTYPE html> <html lang="az"> <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 - Rerere</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-Tools-Rerere">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Rerere">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-Tools-Rerere">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Herramientas-de-Git-Rerere">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Utilitaires-Git-Rerere">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%e3%81%95%e3%81%be%e3%81%96%e3%81%be%e3%81%aa%e3%83%84%e3%83%bc%e3%83%ab-Rerere">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Rerere">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-Tools-Rerere">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%98%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d1%8b-Git-Rerere">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Orodja-Git-Rerere">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Ang-Rerere">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-Rerere">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/Git-%e5%b7%a5%e5%85%b7-Rerere">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Git-Tools-Rerere">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/Git-%d0%90%d0%bb%d0%b0%d1%82%d0%ba%d0%b8-Rerere">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Narz%c4%99dzia-Gita-Rerere">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%93%d0%b8%d1%82-%d0%b0%d0%bb%d0%b0%d1%82%d0%b8-Rerere">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-Tools-Rerere">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/Git-%e5%b7%a5%e5%85%b7-Rerere">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-Tools-Rerere">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/Git-Tools-Rerere" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-Tools-Rerere">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-Tools-Rerere">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-Tools-Rerere">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Git-Tools-Rerere">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Ferramentas-do-Git-Rerere">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-Tools-Rerere">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git-Ara%c3%a7lar%c4%b1-Rerere">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit2-aze/progit2">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/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-Versiyaya-N%c9%99zar%c9%99t-Haqq%c4%b1nda">Başlanğıc</a></h2> <ol> <li> 1.1 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-Versiyaya-N%c9%99zar%c9%99t-Haqq%c4%b1nda">Versiyaya Nəzarət Haqqında</a> </li> <li> 1.2 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-Git%e2%80%99in-Q%c4%b1sa-Hekay%c9%99si">Git’in Qısa Hekayəsi</a> </li> <li> 1.3 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-Git-N%c9%99dir%3F">Git Nədir?</a> </li> <li> 1.4 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-%c6%8fmr-S%c9%99tiri">Əmr Sətiri</a> </li> <li> 1.5 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-Git%e2%80%99i-Qura%c5%9fd%c4%b1rmaq">Git’i Quraşdırmaq</a> </li> <li> 1.6 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-%c4%b0lk-D%c9%99f%c9%99-Git-Qura%c5%9fd%c4%b1rmas%c4%b1">İlk Dəfə Git Quraşdırması</a> </li> <li> 1.7 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-K%c3%b6m%c9%99k-Almaq">Kömək Almaq</a> </li> <li> 1.8 <a href="/book/az/v2/Ba%c5%9flan%c4%9f%c4%b1c-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Git-Deposunun-%c6%8fld%c9%99-Edilm%c9%99si">Git’in Əsasları</a></h2> <ol> <li> 2.1 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Git-Deposunun-%c6%8fld%c9%99-Edilm%c9%99si">Git Deposunun Əldə Edilməsi</a> </li> <li> 2.2 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Depoda-D%c9%99yi%c5%9fiklikl%c9%99rin-Qeyd-Edilm%c9%99si">Depoda Dəyişikliklərin Qeyd Edilməsi</a> </li> <li> 2.3 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Commit-Tarix%c3%a7%c9%99sin%c9%99-Bax%c4%b1%c5%9f">Commit Tarixçəsinə Baxış</a> </li> <li> 2.4 <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">Ləğv Edilən İşlər (Geri qaytarılan)</a> </li> <li> 2.5 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Uzaqdan-%c4%b0%c5%9fl%c9%99m%c9%99k">Uzaqdan İşləmək</a> </li> <li> 2.6 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Etiketl%c9%99m%c9%99">Etiketləmə</a> </li> <li> 2.7 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Git-Alias%e2%80%99lar">Git Alias’lar</a> </li> <li> 2.8 <a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Nutshell%e2%80%99d%c9%99-Branch%e2%80%99lar">Git’də Branch</a></h2> <ol> <li> 3.1 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Nutshell%e2%80%99d%c9%99-Branch%e2%80%99lar">Nutshell’də Branch’lar</a> </li> <li> 3.2 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Sad%c9%99-Branching-v%c9%99-Birl%c9%99%c5%9fdirm%c9%99">Sadə Branching və Birləşdirmə</a> </li> <li> 3.3 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Branch-%c4%b0dar%c9%99edilm%c9%99si">Branch İdarəedilməsi</a> </li> <li> 3.4 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Branching-%c4%b0%c5%9f-Ax%c4%b1nlar%c4%b1">Branching İş Axınları</a> </li> <li> 3.5 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Uzaq-Branch%e2%80%99lar">Uzaq Branch’lar</a> </li> <li> 3.6 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Rebasing">Rebasing</a> </li> <li> 3.7 <a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Protokollar">Server’də Git</a></h2> <ol> <li> 4.1 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Protokollar">Protokollar</a> </li> <li> 4.2 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Serverd%c9%99-Git-%c6%8fld%c9%99-Etm%c9%99k">Serverdə Git Əldə Etmək</a> </li> <li> 4.3 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Sizin-%c3%b6z-SSH-Public-Key%e2%80%99nizi-yaratmaq">Sizin öz SSH Public Key’nizi yaratmaq</a> </li> <li> 4.4 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Server-qurmaq">Server qurmaq</a> </li> <li> 4.5 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Git-Daemon">Git Daemon</a> </li> <li> 4.6 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-%c3%9c%c3%a7%c3%bcnc%c3%bc-T%c9%99r%c9%99f-Se%c3%a7iml%c9%99ri">Üçüncü Tərəf Seçimləri</a> </li> <li> 4.10 <a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/az/v2/Paylanm%c4%b1%c5%9f-Git-Distribyutorluq-%c4%b0%c5%9f-Ax%c4%b1nlar%c4%b1">Paylanmış Git</a></h2> <ol> <li> 5.1 <a href="/book/az/v2/Paylanm%c4%b1%c5%9f-Git-Distribyutorluq-%c4%b0%c5%9f-Ax%c4%b1nlar%c4%b1">Distribyutorluq İş Axınları</a> </li> <li> 5.2 <a href="/book/az/v2/Paylanm%c4%b1%c5%9f-Git-Layih%c9%99y%c9%99-T%c3%b6hf%c9%99-verm%c9%99k">Layihəyə Töhfə vermək</a> </li> <li> 5.3 <a href="/book/az/v2/Paylanm%c4%b1%c5%9f-Git-Layih%c9%99nin-Saxlan%c4%b1lmas%c4%b1">Layihənin Saxlanılması</a> </li> <li> 5.4 <a href="/book/az/v2/Paylanm%c4%b1%c5%9f-Git-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/az/v2/GitHub-Hesab-Qurma-v%c9%99-Konfiqurasiya">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/az/v2/GitHub-Hesab-Qurma-v%c9%99-Konfiqurasiya">Hesab Qurma və Konfiqurasiya</a> </li> <li> 6.2 <a href="/book/az/v2/GitHub-Bir-Layih%c9%99y%c9%99-T%c3%b6hf%c9%99-Verm%c9%99k">Bir Layihəyə Töhfə Vermək</a> </li> <li> 6.3 <a href="/book/az/v2/GitHub-Bir-Layih%c9%99nin-Saxlan%c4%b1lmas%c4%b1">Bir Layihənin Saxlanılması</a> </li> <li> 6.4 <a href="/book/az/v2/GitHub-Bir-T%c9%99%c5%9fkilat%c4%b1-Idar%c9%99-Etm%c9%99k">Bir Təşkilatı Idarə Etmək</a> </li> <li> 6.5 <a href="/book/az/v2/GitHub-GitHub-Skriptl%c9%99m%c9%99">GitHub Skriptləmə</a> </li> <li> 6.6 <a href="/book/az/v2/GitHub-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Reviziya-Se%c3%a7imi">Git Alətləri</a></h2> <ol> <li> 7.1 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Reviziya-Se%c3%a7imi">Reviziya Seçimi</a> </li> <li> 7.2 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Interaktiv-S%c9%99hn%c9%99l%c9%99%c5%9fdirm%c9%99">Interaktiv Səhnələşdirmə</a> </li> <li> 7.3 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Stashing-v%c9%99-T%c9%99mizl%c9%99m%c9%99">Stashing və Təmizləmə</a> </li> <li> 7.4 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-%c4%b0%c5%9finizin-%c4%b0mzalanmas%c4%b1">İşinizin İmzalanması</a> </li> <li> 7.5 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Axtar%c4%b1%c5%9f">Axtarış</a> </li> <li> 7.6 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Tarixi-Yenid%c9%99n-Yazmaq">Tarixi Yenidən Yazmaq</a> </li> <li> 7.7 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Reset-Demystified">Reset Demystified</a> </li> <li> 7.8 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-%c4%b0nki%c5%9faf-etmi%c5%9f-Birl%c9%99%c5%9fm%c9%99">İnkişaf etmiş Birləşmə</a> </li> <li> 7.9 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Rerere" class="active">Rerere</a> </li> <li> 7.10 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Git-il%c9%99-Debugging">Git ilə Debugging</a> </li> <li> 7.11 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Alt-Modullar">Alt Modullar</a> </li> <li> 7.12 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-D%c9%99yi%c5%9fdirm%c9%99k">Dəyişdirmək</a> </li> <li> 7.14 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Etibarl%c4%b1-Yadda%c5%9f">Etibarlı Yaddaş</a> </li> <li> 7.15 <a href="/book/az/v2/Git-Al%c9%99tl%c9%99ri-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Konfiqurasiyas%c4%b1">Git’i Fərdiləşdirmək</a></h2> <ol> <li> 8.1 <a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Konfiqurasiyas%c4%b1">Git Konfiqurasiyası</a> </li> <li> 8.2 <a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Atributlar%c4%b1">Git Atributları</a> </li> <li> 8.3 <a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Hook%e2%80%99lar%c4%b1">Git Hook’ları</a> </li> <li> 8.4 <a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Enforced-Siyas%c9%99t-N%c3%bcmun%c9%99si">Git-Enforced Siyasət Nümunəsi</a> </li> <li> 8.5 <a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/az/v2/Git-v%c9%99-Dig%c9%99r-Sisteml%c9%99r-Git-M%c3%bc%c5%9ft%c9%99ri-kimi">Git və Digər Sistemlər</a></h2> <ol> <li> 9.1 <a href="/book/az/v2/Git-v%c9%99-Dig%c9%99r-Sisteml%c9%99r-Git-M%c3%bc%c5%9ft%c9%99ri-kimi">Git Müştəri kimi</a> </li> <li> 9.2 <a href="/book/az/v2/Git-v%c9%99-Dig%c9%99r-Sisteml%c9%99r-Git%e2%80%99%c9%99-Miqrasiya">Git’ə Miqrasiya</a> </li> <li> 9.3 <a href="/book/az/v2/Git-v%c9%99-Dig%c9%99r-Sisteml%c9%99r-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Plumbing-v%c9%99-Porcelain">Git’in Daxili İşləri</a></h2> <ol> <li> 10.1 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Plumbing-v%c9%99-Porcelain">Plumbing və Porcelain</a> </li> <li> 10.2 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Git-Obyektl%c9%99ri">Git Obyektləri</a> </li> <li> 10.3 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Git-Referanslar%c4%b1">Git Referansları</a> </li> <li> 10.4 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Packfile%e2%80%99lar">Packfile’lar</a> </li> <li> 10.5 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Refspec">Refspec</a> </li> <li> 10.6 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Transfer-Protokollar%c4%b1">Transfer Protokolları</a> </li> <li> 10.7 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Maintenance-v%c9%99-M%c9%99lumatlar%c4%b1n-B%c9%99rpas%c4%b1">Maintenance və Məlumatların Bərpası</a> </li> <li> 10.8 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-M%c3%bchit-D%c9%99yi%c5%9f%c9%99nl%c9%99ri">Mühit Dəyişənləri</a> </li> <li> 10.9 <a href="/book/az/v2/Git%e2%80%99in-Daxili-%c4%b0%c5%9fl%c9%99ri-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Qrafik-interfeysl%c9%99r">Appendix A: Digər Mühitlərdə Git</a></h2> <ol> <li> A1.1 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Qrafik-interfeysl%c9%99r">Qrafik interfeyslər</a> </li> <li> A1.2 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Visual-Studio%e2%80%99da-Git">Visual Studio’da Git</a> </li> <li> A1.3 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Visual-Studio-Code%e2%80%99da-Git">Visual Studio Code’da Git</a> </li> <li> A1.4 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Eclipse%e2%80%99d%c9%99-Git">Eclipse’də Git</a> </li> <li> A1.5 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Sublime-Text%e2%80%99d%c9%99-Git">Sublime Text’də Git</a> </li> <li> A1.6 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Bash%e2%80%99da-Git">Bash’da Git</a> </li> <li> A1.7 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Zsh%e2%80%99d%c9%99-Git">Zsh’də Git</a> </li> <li> A1.8 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-PowerShell%e2%80%99d%c9%99-Git">PowerShell’də Git</a> </li> <li> A1.9 <a href="/book/az/v2/Appendix-A:-Dig%c9%99r-M%c3%bchitl%c9%99rd%c9%99-Git-Q%c4%b1sa-M%c9%99zmun">Qısa Məzmun</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/az/v2/Appendix-B:-Proqramlara-Git-Daxil-Etm%c9%99k-%c6%8fmr-s%c9%99tri-Git">Appendix B: Proqramlara Git Daxil Etmək</a></h2> <ol> <li> A2.1 <a href="/book/az/v2/Appendix-B:-Proqramlara-Git-Daxil-Etm%c9%99k-%c6%8fmr-s%c9%99tri-Git">Əmr-sətri Git</a> </li> <li> A2.2 <a href="/book/az/v2/Appendix-B:-Proqramlara-Git-Daxil-Etm%c9%99k-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/az/v2/Appendix-B:-Proqramlara-Git-Daxil-Etm%c9%99k-JGit">JGit</a> </li> <li> A2.4 <a href="/book/az/v2/Appendix-B:-Proqramlara-Git-Daxil-Etm%c9%99k-go-git">go-git</a> </li> <li> A2.5 <a href="/book/az/v2/Appendix-B:-Proqramlara-Git-Daxil-Etm%c9%99k-Dulwich">Dulwich</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Qura%c5%9fd%c4%b1rma-v%c9%99-Konfiqurasiya">Appendix C: Git Əmrləri</a></h2> <ol> <li> A3.1 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Qura%c5%9fd%c4%b1rma-v%c9%99-Konfiqurasiya">Quraşdırma və Konfiqurasiya</a> </li> <li> A3.2 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Layih%c9%99l%c9%99rin-Al%c4%b1nmas%c4%b1-v%c9%99-Yarad%c4%b1lmas%c4%b1">Layihələrin Alınması və Yaradılması</a> </li> <li> A3.3 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Sad%c9%99-Snapshotting">Sadə Snapshotting</a> </li> <li> A3.4 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Branching-v%c9%99-Birl%c9%99%c5%9fm%c9%99">Branching və Birləşmə</a> </li> <li> A3.5 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Layih%c9%99l%c9%99rin-Payla%c5%9f%c4%b1lmas%c4%b1-v%c9%99-Yenil%c9%99nm%c9%99si">Layihələrin Paylaşılması və Yenilənməsi</a> </li> <li> A3.6 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Yoxlama-v%c9%99-M%c3%bcqayis%c9%99">Yoxlama və Müqayisə</a> </li> <li> A3.7 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Patching">Patching</a> </li> <li> A3.9 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-E-po%c3%a7t">E-poçt</a> </li> <li> A3.10 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Xarici-Sisteml%c9%99r">Xarici Sistemlər</a> </li> <li> A3.11 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-%c4%b0dar%c9%99etm%c9%99">İdarəetmə</a> </li> <li> A3.12 <a href="/book/az/v2/Appendix-C:-Git-%c6%8fmrl%c9%99ri-Plumbing-%c6%8fmrl%c9%99ri">Plumbing Əmrləri</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>7.9 Git Alətləri - Rerere</h1> <div> <h2 id="ref_rerere">Rerere</h2> <div class="paragraph"> <p>The <code>git rerere</code> functionality is a bit of a hidden feature. The name stands for “reuse recorded resolution” and, as the name implies, it allows you to ask Git to remember how you’ve resolved a hunk conflict so that the next time it sees the same conflict, Git can resolve it for you automatically.</p> </div> <div class="paragraph"> <p>There are a number of scenarios in which this functionality might be really handy. One of the examples that is mentioned in the documentation is when you want to make sure a long-lived topic branch will ultimately merge cleanly, but you don’t want to have a bunch of intermediate merge commits cluttering up your commit history. With <code>rerere</code> enabled, you can attempt the occasional merge, resolve the conflicts, then back out of the merge. If you do this continuously, then the final merge should be easy because <code>rerere</code> can just do everything for you automatically.</p> </div> <div class="paragraph"> <p>This same tactic can be used if you want to keep a branch rebased so you don’t have to deal with the same rebasing conflicts each time you do it. Or if you want to take a branch that you merged and fixed a bunch of conflicts and then decide to rebase it instead — you likely won’t have to do all the same conflicts again.</p> </div> <div class="paragraph"> <p>Another application of <code>rerere</code> is where you merge a bunch of evolving topic branches together into a testable head occasionally, as the Git project itself often does. If the tests fail, you can rewind the merges and re-do them without the topic branch that made the tests fail without having to re-resolve the conflicts again.</p> </div> <div class="paragraph"> <p>To enable <code>rerere</code> functionality, you simply have to run this config setting:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global rerere.enabled true</code></pre> </div> </div> <div class="paragraph"> <p>You can also turn it on by creating the <code>.git/rr-cache</code> directory in a specific repository, but the config setting is clearer and enables that feature globally for you.</p> </div> <div class="paragraph"> <p>Now let’s see a simple example, similar to our previous one. Let’s say we have a file named <code>hello.rb</code> that looks like this:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">#! /usr/bin/env ruby def hello puts 'hello world' end</code></pre> </div> </div> <div class="paragraph"> <p>In one branch we change the word “hello” to “hola”, then in another branch we change the “world” to “mundo”, just like before.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/az/v2/images/rerere1.png" alt="rerere1"> </div> </div> <div class="paragraph"> <p>When we merge the two branches together, we’ll get a merge conflict:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git merge i18n-world Auto-merging hello.rb CONFLICT (content): Merge conflict in hello.rb Recorded preimage for 'hello.rb' Automatic merge failed; fix conflicts and then commit the result.</code></pre> </div> </div> <div class="paragraph"> <p>You should notice the new line <code>Recorded preimage for FILE</code> in there. Otherwise it should look exactly like a normal merge conflict. At this point, <code>rerere</code> can tell us a few things. Normally, you might run <code>git status</code> at this point to see what all conflicted:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git status # On branch master # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add <file>..." to mark resolution) # # both modified: hello.rb #</code></pre> </div> </div> <div class="paragraph"> <p>However, <code>git rerere</code> will also tell you what it has recorded the pre-merge state for with <code>git rerere status</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git rerere status hello.rb</code></pre> </div> </div> <div class="paragraph"> <p>And <code>git rerere diff</code> will show the current state of the resolution — what you started with to resolve and what you’ve resolved it to.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git rerere diff --- a/hello.rb +++ b/hello.rb @@ -1,11 +1,11 @@ #! /usr/bin/env ruby def hello -<<<<<<< - puts 'hello mundo' -======= +<<<<<<< HEAD puts 'hola world' ->>>>>>> +======= + puts 'hello mundo' +>>>>>>> i18n-world end</code></pre> </div> </div> <div class="paragraph"> <p>Also (and this isn’t really related to <code>rerere</code>), you can use <code>git ls-files -u</code> to see the conflicted files and the before, left and right versions:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git ls-files -u 100644 39804c942a9c1f2c03dc7c5ebcd7f3e3a6b97519 1 hello.rb 100644 a440db6e8d1fd76ad438a49025a9ad9ce746f581 2 hello.rb 100644 54336ba847c3758ab604876419607e9443848474 3 hello.rb</code></pre> </div> </div> <div class="paragraph"> <p>Now you can resolve it to just be <code>puts 'hola mundo'</code> and you can run <code>git rerere diff</code> again to see what rerere will remember:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git rerere diff --- a/hello.rb +++ b/hello.rb @@ -1,11 +1,7 @@ #! /usr/bin/env ruby def hello -<<<<<<< - puts 'hello mundo' -======= - puts 'hola world' ->>>>>>> + puts 'hola mundo' end</code></pre> </div> </div> <div class="paragraph"> <p>So that basically says, when Git sees a hunk conflict in a <code>hello.rb</code> file that has “hello mundo” on one side and “hola world” on the other, it will resolve it to “hola mundo”.</p> </div> <div class="paragraph"> <p>Now we can mark it as resolved and commit it:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git add hello.rb $ git commit Recorded resolution for 'hello.rb'. [master 68e16e5] Merge branch 'i18n'</code></pre> </div> </div> <div class="paragraph"> <p>You can see that it "Recorded resolution for FILE".</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/az/v2/images/rerere2.png" alt="rerere2"> </div> </div> <div class="paragraph"> <p>Now, let’s undo that merge and then rebase it on top of our <code>master</code> branch instead. We can move our branch back by using <code>git reset</code> as we saw in <a href="/book/az/v2/ch00/_git_reset">Reset Demystified</a>.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git reset --hard HEAD^ HEAD is now at ad63f15 i18n the hello</code></pre> </div> </div> <div class="paragraph"> <p>Our merge is undone. Now let’s rebase the topic branch.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout i18n-world Switched to branch 'i18n-world' $ git rebase master First, rewinding head to replay your work on top of it... Applying: i18n one word Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging hello.rb CONFLICT (content): Merge conflict in hello.rb Resolved 'hello.rb' using previous resolution. Failed to merge in the changes. Patch failed at 0001 i18n one word</code></pre> </div> </div> <div class="paragraph"> <p>Now, we got the same merge conflict like we expected, but take a look at the <code>Resolved FILE using previous resolution</code> line. If we look at the file, we’ll see that it’s already been resolved, there are no merge conflict markers in it.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">#! /usr/bin/env ruby def hello puts 'hola mundo' end</code></pre> </div> </div> <div class="paragraph"> <p>Also, <code>git diff</code> will show you how it was automatically re-resolved:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git diff diff --cc hello.rb index a440db6,54336ba..0000000 --- a/hello.rb +++ b/hello.rb @@@ -1,7 -1,7 +1,7 @@@ #! /usr/bin/env ruby def hello - puts 'hola world' - puts 'hello mundo' ++ puts 'hola mundo' end</code></pre> </div> </div> <div class="imageblock"> <div class="content"> <img src="/book/az/v2/images/rerere3.png" alt="rerere3"> </div> </div> <div class="paragraph"> <p>You can also recreate the conflicted file state with <code>git checkout</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout --conflict=merge hello.rb $ cat hello.rb #! /usr/bin/env ruby def hello <<<<<<< ours puts 'hola world' ======= puts 'hello mundo' >>>>>>> theirs end</code></pre> </div> </div> <div class="paragraph"> <p>We saw an example of this in <a href="/book/az/v2/ch00/_advanced_merging">İnkişaf etmiş Birləşmə</a>. For now though, let’s re-resolve it by just running <code>git rerere</code> again:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git rerere Resolved 'hello.rb' using previous resolution. $ cat hello.rb #! /usr/bin/env ruby def hello puts 'hola mundo' end</code></pre> </div> </div> <div class="paragraph"> <p>We have re-resolved the file automatically using the <code>rerere</code> cached resolution. You can now add and continue the rebase to complete it.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git add hello.rb $ git rebase --continue Applying: i18n one word</code></pre> </div> </div> <div class="paragraph"> <p>So, if you do a lot of re-merges, or want to keep a topic branch up to date with your <code>master</code> branch without a ton of merges, or you rebase often, you can turn on <code>rerere</code> to help your life out a bit.</p> </div> <div id="nav"><a href="/book/az/v2/Git-Alətləri-İnkişaf-etmiş-Birləşmə">prev</a> | <a href="/book/az/v2/Git-Alətləri-Git-ilə-Debugging">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>