CINXE.COM

Git - Rerere

<!DOCTYPE html> <html lang="ko"> <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/progit/progit2-ko">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/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac%eb%9e%80%3F">시작하기</a></h2> <ol> <li> 1.1 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac%eb%9e%80%3F">버전 관리란?</a> </li> <li> 1.2 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-%ec%a7%a7%ea%b2%8c-%eb%b3%b4%eb%8a%94-Git%ec%9d%98-%ec%97%ad%ec%82%ac">짧게 보는 Git의 역사</a> </li> <li> 1.3 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-Git-%ea%b8%b0%ec%b4%88">Git 기초</a> </li> <li> 1.4 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-CLI">CLI</a> </li> <li> 1.5 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-Git-%ec%84%a4%ec%b9%98">Git 설치</a> </li> <li> 1.6 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-Git-%ec%b5%9c%ec%b4%88-%ec%84%a4%ec%a0%95">Git 최초 설정</a> </li> <li> 1.7 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-%eb%8f%84%ec%9b%80%eb%a7%90-%eb%b3%b4%ea%b8%b0">도움말 보기</a> </li> <li> 1.8 <a href="/book/ko/v2/%ec%8b%9c%ec%9e%91%ed%95%98%ea%b8%b0-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-Git-%ec%a0%80%ec%9e%a5%ec%86%8c-%eb%a7%8c%eb%93%a4%ea%b8%b0">Git의 기초</a></h2> <ol> <li> 2.1 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-Git-%ec%a0%80%ec%9e%a5%ec%86%8c-%eb%a7%8c%eb%93%a4%ea%b8%b0">Git 저장소 만들기</a> </li> <li> 2.2 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%ec%88%98%ec%a0%95%ed%95%98%ea%b3%a0-%ec%a0%80%ec%9e%a5%ec%86%8c%ec%97%90-%ec%a0%80%ec%9e%a5%ed%95%98%ea%b8%b0">수정하고 저장소에 저장하기</a> </li> <li> 2.3 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%ec%bb%a4%eb%b0%8b-%ed%9e%88%ec%8a%a4%ed%86%a0%eb%a6%ac-%ec%a1%b0%ed%9a%8c%ed%95%98%ea%b8%b0">커밋 히스토리 조회하기</a> </li> <li> 2.4 <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> </li> <li> 2.5 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%eb%a6%ac%eb%aa%a8%ed%8a%b8-%ec%a0%80%ec%9e%a5%ec%86%8c">리모트 저장소</a> </li> <li> 2.6 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%ed%83%9c%ea%b7%b8">태그</a> </li> <li> 2.7 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-Git-Alias">Git Alias</a> </li> <li> 2.8 <a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%b8%8c%eb%9e%9c%ec%b9%98%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80">Git 브랜치</a></h2> <ol> <li> 3.1 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%b8%8c%eb%9e%9c%ec%b9%98%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80">브랜치란 무엇인가</a> </li> <li> 3.2 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%b8%8c%eb%9e%9c%ec%b9%98%ec%99%80-Merge-%ec%9d%98-%ea%b8%b0%ec%b4%88">브랜치와 Merge 의 기초</a> </li> <li> 3.3 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%b8%8c%eb%9e%9c%ec%b9%98-%ea%b4%80%eb%a6%ac">브랜치 관리</a> </li> <li> 3.4 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%b8%8c%eb%9e%9c%ec%b9%98-%ec%9b%8c%ed%81%ac%ed%94%8c%eb%a1%9c">브랜치 워크플로</a> </li> <li> 3.5 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%eb%a6%ac%eb%aa%a8%ed%8a%b8-%eb%b8%8c%eb%9e%9c%ec%b9%98">리모트 브랜치</a> </li> <li> 3.6 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-Rebase-%ed%95%98%ea%b8%b0">Rebase 하기</a> </li> <li> 3.7 <a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ed%94%84%eb%a1%9c%ed%86%a0%ec%bd%9c">Git 서버</a></h2> <ol> <li> 4.1 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ed%94%84%eb%a1%9c%ed%86%a0%ec%bd%9c">프로토콜</a> </li> <li> 4.2 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ec%84%9c%eb%b2%84%ec%97%90-Git-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0">서버에 Git 설치하기</a> </li> <li> 4.3 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-SSH-%ea%b3%b5%ea%b0%9c%ed%82%a4-%eb%a7%8c%eb%93%a4%ea%b8%b0">SSH 공개키 만들기</a> </li> <li> 4.4 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ec%84%9c%eb%b2%84-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">서버 설정하기</a> </li> <li> 4.5 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-Git-%eb%8d%b0%eb%aa%ac">Git 데몬</a> </li> <li> 4.6 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ec%8a%a4%eb%a7%88%ed%8a%b8-HTTP">스마트 HTTP</a> </li> <li> 4.7 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%eb%98%90-%eb%8b%a4%eb%a5%b8-%ec%84%a0%ed%83%9d%ec%a7%80,-%ed%98%b8%ec%8a%a4%ed%8c%85">또 다른 선택지, 호스팅</a> </li> <li> 4.10 <a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/ko/v2/%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-Git-%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-%ec%9b%8c%ed%81%ac%ed%94%8c%eb%a1%9c">분산 환경에서의 Git</a></h2> <ol> <li> 5.1 <a href="/book/ko/v2/%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-Git-%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-%ec%9b%8c%ed%81%ac%ed%94%8c%eb%a1%9c">분산 환경에서의 워크플로</a> </li> <li> 5.2 <a href="/book/ko/v2/%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-Git-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8%ec%97%90-%ea%b8%b0%ec%97%ac%ed%95%98%ea%b8%b0">프로젝트에 기여하기</a> </li> <li> 5.3 <a href="/book/ko/v2/%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-Git-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ea%b4%80%eb%a6%ac%ed%95%98%ea%b8%b0">프로젝트 관리하기</a> </li> <li> 5.4 <a href="/book/ko/v2/%eb%b6%84%ec%82%b0-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c%ec%9d%98-Git-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/ko/v2/GitHub-%ea%b3%84%ec%a0%95-%eb%a7%8c%eb%93%a4%ea%b3%a0-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/ko/v2/GitHub-%ea%b3%84%ec%a0%95-%eb%a7%8c%eb%93%a4%ea%b3%a0-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">계정 만들고 설정하기</a> </li> <li> 6.2 <a href="/book/ko/v2/GitHub-GitHub-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8%ec%97%90-%ea%b8%b0%ec%97%ac%ed%95%98%ea%b8%b0">GitHub 프로젝트에 기여하기</a> </li> <li> 6.3 <a href="/book/ko/v2/GitHub-GitHub-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ea%b4%80%eb%a6%ac%ed%95%98%ea%b8%b0">GitHub 프로젝트 관리하기</a> </li> <li> 6.4 <a href="/book/ko/v2/GitHub-Organization-%ea%b4%80%eb%a6%ac%ed%95%98%ea%b8%b0">Organization 관리하기</a> </li> <li> 6.5 <a href="/book/ko/v2/GitHub-GitHub-%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8c%85">GitHub 스크립팅</a> </li> <li> 6.6 <a href="/book/ko/v2/GitHub-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%eb%a6%ac%eb%b9%84%ec%a0%84-%ec%a1%b0%ed%9a%8c%ed%95%98%ea%b8%b0">Git 도구</a></h2> <ol> <li> 7.1 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%eb%a6%ac%eb%b9%84%ec%a0%84-%ec%a1%b0%ed%9a%8c%ed%95%98%ea%b8%b0">리비전 조회하기</a> </li> <li> 7.2 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%eb%8c%80%ed%99%94%ed%98%95-%eb%aa%85%eb%a0%b9">대화형 명령</a> </li> <li> 7.3 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Stashing%ea%b3%bc-Cleaning">Stashing과 Cleaning</a> </li> <li> 7.4 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%eb%82%b4-%ec%9e%91%ec%97%85%ec%97%90-%ec%84%9c%eb%aa%85%ed%95%98%ea%b8%b0">내 작업에 서명하기</a> </li> <li> 7.5 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%ea%b2%80%ec%83%89">검색</a> </li> <li> 7.6 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%ed%9e%88%ec%8a%a4%ed%86%a0%eb%a6%ac-%eb%8b%a8%ec%9e%a5%ed%95%98%ea%b8%b0">히스토리 단장하기</a> </li> <li> 7.7 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Reset-%eb%aa%85%ed%99%95%ed%9e%88-%ec%95%8c%ea%b3%a0-%ea%b0%80%ea%b8%b0">Reset 명확히 알고 가기</a> </li> <li> 7.8 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%ea%b3%a0%ea%b8%89-Merge">고급 Merge</a> </li> <li> 7.9 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Rerere" class="active">Rerere</a> </li> <li> 7.10 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Git%ec%9c%bc%eb%a1%9c-%eb%b2%84%ea%b7%b8-%ec%b0%be%ea%b8%b0">Git으로 버그 찾기</a> </li> <li> 7.11 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%ec%84%9c%eb%b8%8c%eb%aa%a8%eb%93%88">서브모듈</a> </li> <li> 7.12 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Bundle">Bundle</a> </li> <li> 7.13 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Replace">Replace</a> </li> <li> 7.14 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Credential-%ec%a0%80%ec%9e%a5%ec%86%8c">Credential 저장소</a> </li> <li> 7.15 <a href="/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-Git-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">Git맞춤</a></h2> <ol> <li> 8.1 <a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-Git-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">Git 설정하기</a> </li> <li> 8.2 <a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-Git-Attributes">Git Attributes</a> </li> <li> 8.3 <a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-%ec%a0%95%ec%b1%85-%ea%b5%ac%ed%98%84%ed%95%98%ea%b8%b0">정책 구현하기</a> </li> <li> 8.5 <a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/ko/v2/Git%ea%b3%bc-%ec%97%ac%ed%83%80-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac-%ec%8b%9c%ec%8a%a4%ed%85%9c-Git:-%eb%b2%94%ec%9a%a9-Client">Git과 여타 버전 관리 시스템</a></h2> <ol> <li> 9.1 <a href="/book/ko/v2/Git%ea%b3%bc-%ec%97%ac%ed%83%80-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac-%ec%8b%9c%ec%8a%a4%ed%85%9c-Git:-%eb%b2%94%ec%9a%a9-Client">Git: 범용 Client</a> </li> <li> 9.2 <a href="/book/ko/v2/Git%ea%b3%bc-%ec%97%ac%ed%83%80-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac-%ec%8b%9c%ec%8a%a4%ed%85%9c-Git%ec%9c%bc%eb%a1%9c-%ec%98%ae%ea%b8%b0%ea%b8%b0">Git으로 옮기기</a> </li> <li> 9.3 <a href="/book/ko/v2/Git%ea%b3%bc-%ec%97%ac%ed%83%80-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac-%ec%8b%9c%ec%8a%a4%ed%85%9c-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Plumbing-%eb%aa%85%eb%a0%b9%ea%b3%bc-Porcelain-%eb%aa%85%eb%a0%b9">Git의 내부</a></h2> <ol> <li> 10.1 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Plumbing-%eb%aa%85%eb%a0%b9%ea%b3%bc-Porcelain-%eb%aa%85%eb%a0%b9">Plumbing 명령과 Porcelain 명령</a> </li> <li> 10.2 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Git-%ea%b0%9c%ec%b2%b4">Git 개체</a> </li> <li> 10.3 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Git-Refs">Git Refs</a> </li> <li> 10.4 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Packfile">Packfile</a> </li> <li> 10.5 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-Refspec">Refspec</a> </li> <li> 10.6 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-%eb%8d%b0%ec%9d%b4%ed%84%b0-%ec%a0%84%ec%86%a1-%ed%94%84%eb%a1%9c%ed%86%a0%ec%bd%9c">데이터 전송 프로토콜</a> </li> <li> 10.7 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-%ec%9a%b4%ec%98%81-%eb%b0%8f-%eb%8d%b0%ec%9d%b4%ed%84%b0-%eb%b3%b5%ea%b5%ac">운영 및 데이터 복구</a> </li> <li> 10.8 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-%ed%99%98%ea%b2%bd%eb%b3%80%ec%88%98">환경변수</a> </li> <li> 10.9 <a href="/book/ko/v2/Git%ec%9d%98-%eb%82%b4%eb%b6%80-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-GUI">부록 A: 다양한 환경에서 Git 사용하기</a></h2> <ol> <li> A1.1 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-GUI">GUI</a> </li> <li> A1.2 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-Visual-Studio">Visual Studio</a> </li> <li> A1.3 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-Eclipse">Eclipse</a> </li> <li> A1.4 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-Bash">Bash</a> </li> <li> A1.5 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-Zsh">Zsh</a> </li> <li> A1.6 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-Git-in-Powershell">Git in Powershell</a> </li> <li> A1.7 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-A:-%eb%8b%a4%ec%96%91%ed%95%9c-%ed%99%98%ea%b2%bd%ec%97%90%ec%84%9c-Git-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b0-%ec%9a%94%ec%95%bd">요약</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-B:-%ec%95%a0%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98%ec%97%90-Git-%eb%84%a3%ea%b8%b0-Git-%eb%aa%85%eb%a0%b9%ec%96%b4">부록 B: 애플리케이션에 Git 넣기</a></h2> <ol> <li> A2.1 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-B:-%ec%95%a0%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98%ec%97%90-Git-%eb%84%a3%ea%b8%b0-Git-%eb%aa%85%eb%a0%b9%ec%96%b4">Git 명령어</a> </li> <li> A2.2 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-B:-%ec%95%a0%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98%ec%97%90-Git-%eb%84%a3%ea%b8%b0-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-B:-%ec%95%a0%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98%ec%97%90-Git-%eb%84%a3%ea%b8%b0-JGit">JGit</a> </li> <li> A2.4 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-B:-%ec%95%a0%ed%94%8c%eb%a6%ac%ec%bc%80%ec%9d%b4%ec%85%98%ec%97%90-Git-%eb%84%a3%ea%b8%b0-go-git">go-git</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ec%84%a4%ec%b9%98%ec%99%80-%ec%84%a4%ec%a0%95">부록 C: Git 명령어</a></h2> <ol> <li> A3.1 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ec%84%a4%ec%b9%98%ec%99%80-%ec%84%a4%ec%a0%95">설치와 설정</a> </li> <li> A3.2 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ea%b0%80%ec%a0%b8%ec%98%a4%ea%b8%b0%ec%99%80-%ec%83%9d%ec%84%b1%ed%95%98%ea%b8%b0">프로젝트 가져오기와 생성하기</a> </li> <li> A3.3 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ec%8a%a4%eb%83%85%ec%83%b7-%eb%8b%a4%eb%a3%a8%ea%b8%b0">스냅샷 다루기</a> </li> <li> A3.4 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-Branch%ec%99%80-Merge">Branch와 Merge</a> </li> <li> A3.5 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ea%b3%b5%ec%9c%a0%ed%95%98%ea%b3%a0-%ec%97%85%eb%8d%b0%ec%9d%b4%ed%8a%b8%ed%95%98%ea%b8%b0">공유하고 업데이트하기</a> </li> <li> A3.6 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%eb%b3%b4%ea%b8%b0%ec%99%80-%eb%b9%84%ea%b5%90">보기와 비교</a> </li> <li> A3.7 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-Patch-%ed%95%98%ea%b8%b0">Patch 하기</a> </li> <li> A3.9 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-Email">Email</a> </li> <li> A3.10 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%eb%8b%a4%eb%a5%b8-%eb%b2%84%ec%a0%84-%ea%b4%80%eb%a6%ac-%ec%8b%9c%ec%8a%a4%ed%85%9c">다른 버전 관리 시스템</a> </li> <li> A3.11 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-%ea%b4%80%eb%a6%ac">관리</a> </li> <li> A3.12 <a href="/book/ko/v2/%eb%b6%80%eb%a1%9d-C:-Git-%eb%aa%85%eb%a0%b9%ec%96%b4-Plumbing-%eb%aa%85%eb%a0%b9%ec%96%b4">Plumbing 명령어</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 도구 - Rerere</h1> <div> <h2 id="ref_rerere">Rerere</h2> <div class="paragraph"> <p><code>git rerere</code> 기능은 약간 숨겨진 기능이다. “reuse recorded resolution” 이라고 해서 기록한 해결책 재사용하기란 뜻의 이름이고 이름 그대로 동작한다. Git은 충돌이 났을 때 각 코드 덩어리를 어떻게 해결했는지 기록을 해 두었다가 나중에 같은 충돌이 나면 기록을 참고하여 자동으로 해결한다.</p> </div> <div class="paragraph"> <p>이 기능을 사용하면 재미있는 시나리오가 가능하다. 문서에서 드는 예제 중 하나는 긴 호흡의 브랜치를 깔끔하게 Merge 하고 싶은데 Merge 커밋은 많이 만들고 싶지 않을 때 사용하는 것이다. <code>rerere</code> 기능을 켜고 자주 Merge를 해서 충돌을 해결하고 Merge 이전으로 돌아간다. 이 과정을 반복해서 기록을 쌓아두면 <code>rerere</code> 기능은 나중에 한 번에 Merge 할 때 기록을 참고한다. 자동으로 충돌이 날 만한 부분을 다 해결해주시니 몸과 마음이 평안하다.</p> </div> <div class="paragraph"> <p>브랜치를 Rebase 할 때도 같은 전략을 사용할 수 있다. 쌓인 충돌 해결 기록을 참고하여 Git은 Rebase 할 때 발생한 충돌도 최대한 해결한다. 충돌 덩어리들을 해결하고 Merge 했는데 다시 Rebase 하기로 마음을 바꿨을 때 같은 충돌을 두 번 해결할 필요 없다.</p> </div> <div class="paragraph"> <p>또 다른 상황을 생각해보자. 뭔가를 개선한 토픽 브랜치가 여러 개 있을 때 이것을 테스트 브랜치에 전부 다 Merge 해야 한다. Git 프로젝트 자체에서 자주 이렇게 한다. 테스트가 실패하면 해당 Merge를 취소하고 테스트가 실패한 토픽 브랜치만 빼고 다시 Merge한다. 한 번 해결한 충돌은 다시 손으로 해결하지 않아도 된다.</p> </div> <div class="paragraph"> <p><code>rerere</code> 기능은 간단히 아래 명령으로 설정하여 활성화한다.</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>저장소에 <code>.git/rr-cache</code> 디렉토리를 만들어 기능을 켤 수도 있다. <code>config</code> 명령을 사용하는 방법이 깔끔하고 Global로 설정할 수도 있다.</p> </div> <div class="paragraph"> <p>간단한 예제를 하나 더 살펴보자. 위에서 살펴본 예제와 비슷하다. 아래와 같은 <code>hello.rb</code> 파일 하나가 있다.</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>이전 예제와 마찬가지로 한 브랜치에서는 “hello” 를 “hola” 로 바꿨다. 그리고 다른 브랜치에서는 “world” 를 “mundo” 로 바꿨다.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ko/v2/images/rerere1.png" alt="rerere1"> </div> </div> <div class="paragraph"> <p>이런 상황에서 이 두 브랜치를 Merge 하면 당연히 충돌이 발생한다.</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>Merge 명령을 실행한 결과에 <code>Recorded preimage for FILE</code> 라는 결과를 눈여겨봐야 한다. 저 말이 없으면 평소처럼 그냥 충돌이 난다. 지금은 <code>rerere</code> 기능 때문에 몇 가지 정보를 더 출력했다. 보통은 <code>git status</code> 명령을 실행해서 어떤 파일에 충돌이 발생했는지 확인한다.</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 &lt;file&gt;..." to unstage) # (use "git add &lt;file&gt;..." to mark resolution) # # both modified: hello.rb #</code></pre> </div> </div> <div class="paragraph"> <p><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>그리고 <code>git rerere diff</code> 명령으로 해결 중인 상태를 확인할 수 있다. 얼마나 해결했는지 비교해서 보여준다.</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 -&lt;&lt;&lt;&lt;&lt;&lt;&lt; - puts 'hello mundo' -======= +&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD puts 'hola world' -&gt;&gt;&gt;&gt;&gt;&gt;&gt; +======= + puts 'hello mundo' +&gt;&gt;&gt;&gt;&gt;&gt;&gt; i18n-world end</code></pre> </div> </div> <div class="paragraph"> <p><code>rerere</code> 기능에 포함된 것은 아니지만 <code>git ls-files -u</code> 명령으로 이전/현재/대상 버전의 해시를 확인할 수도 있다.</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>이제는 <code>puts 'hola mundo'</code> 내용으로 충돌을 해결하자. 마지막으로 <code>git rerere diff</code> 명령을 실행하면 rerere가 기록할 내용을 확인할 수 있다.</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 -&lt;&lt;&lt;&lt;&lt;&lt;&lt; - puts 'hello mundo' -======= - puts 'hola world' -&gt;&gt;&gt;&gt;&gt;&gt;&gt; + puts 'hola mundo' end</code></pre> </div> </div> <div class="paragraph"> <p>간단하게 말해서 Git은 <code>hello.rb</code> 파일에서 충돌이 발생했을 때 한쪽엔 “hello mundo” 이고 다른 한쪽에는 “hola world” 이면 이를 “hola mundo” 로 해결한다.</p> </div> <div class="paragraph"> <p>이제 이 파일을 해결한 것으로 표시한 다음에 커밋한다.</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>커밋을 쌓고 나면 "Recorded resolution for FILE" 이라는 메시지를 결과에서 볼 수 있다.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/ko/v2/images/rerere2.png" alt="rerere2"> </div> </div> <div class="paragraph"> <p>이제 Merge를 되돌리고 Rebase를 해서 master 브랜치에 쌓아 보자. <a href="/book/ko/v2/ch00/_git_reset">Reset 명확히 알고 가기</a>에서 살펴본 대로 <code>git reset</code> 명령을 사용하여 브랜치가 가리키는 커밋을 되돌린다.</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>이렇게 Merge 하기 이전 상태로 돌아왔다. 이제 토픽 브랜치를 Rebase 한다.</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>예상대로 Merge 했을 때와 같은 충돌이 발생한다. 하지만, Rebase를 실행한 결과에 <code>Resolved 'hello.rb' using previous resolution</code> 메시지가 있다. 이 파일을 열어보면 이미 충돌이 해결된 것을 볼 수 있다. 파일 어디에도 충돌이 발생했다는 표시를 찾아볼 수 없다.</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>또 <code>git diff</code> 명령을 실행해보면 Git이 자동으로 해결한 결과도 확인할 수 있다.</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/ko/v2/images/rerere3.png" alt="rerere3"> </div> </div> <div class="paragraph"> <p><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 &lt;&lt;&lt;&lt;&lt;&lt;&lt; ours puts 'hola world' ======= puts 'hello mundo' &gt;&gt;&gt;&gt;&gt;&gt;&gt; theirs end</code></pre> </div> </div> <div class="paragraph"> <p><a href="/book/ko/v2/ch00/_advanced_merging">고급 Merge</a>에서 이러한 명령을 사용하는 예제를 보았다. 이때 <code>git rerere</code> 명령을 실행하면 충돌이 발생한 코드를 자동으로 다시 해결한다.</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>강제로 충돌이 발생한 상황으로 되돌리고 <code>rerere</code> 명령으로 자동으로 충돌을 해결했다. 이제 충돌을 해결한 파일을 추가하고 Rebase를 완료하기만 하면 된다.</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>이처럼 여러 번 Merge 하거나, Merge 커밋을 쌓지 않으면서도 토픽 브랜치를 master 브랜치의 최신 내용으로 유지하거나, Rebase를 자주 한다면 <code>rerere</code> 기능을 켜두는 게 여러모로 몸과 마음에 도움이 된다.</p> </div> <div id="nav"><a href="/book/ko/v2/Git-도구-고급-Merge">prev</a> | <a href="/book/ko/v2/Git-도구-Git으로-버그-찾기">next</a></div> </div> </div> </div> </div> <footer> <div class="site-source"> <a href="/site">About this site</a><br> Patches, suggestions, and comments are welcome. </div> <div class="sfc-member"> Git is a member of <a href="/sfc">Software Freedom Conservancy</a> </div> </footer> <a href="#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top"> <img src="/images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/> </a> <script src="/js/jquery-1.7.1.min.js"></script> <script src="/js/jquery-ui-1.8.18.custom.min.js"></script> <script src="/js/jquery.defaultvalue.js"></script> <script src="/js/session.min.js"></script> <script src="/js/application.min.js"></script> </div> </body> </html>

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