CINXE.COM

Git - Pag-rebase

<!DOCTYPE html> <html lang="tl"> <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 - Pag-rebase</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-Branching-Rebasing">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99d%c9%99-Branch-Rebasing">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/%d0%9a%d0%bb%d0%be%d0%bd%d0%be%d0%b2%d0%b5-%d0%b2-Git-%d0%a3%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-Branching-Rebasing">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Ramificaciones-en-Git-Reorganizar-el-Trabajo-Realizado">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Les-branches-avec-Git-Rebaser-Rebasing">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%83%96%e3%83%a9%e3%83%b3%e3%83%81%e6%a9%9f%e8%83%bd-%e3%83%aa%e3%83%99%e3%83%bc%e3%82%b9">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git-%eb%b8%8c%eb%9e%9c%ec%b9%98-Rebase-%ed%95%98%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Branchen-in-Git-Rebasen">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%92%d0%b5%d1%82%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b2-Git-%d0%9f%d0%b5%d1%80%d0%b5%d0%b1%d0%b0%d0%b7%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Veje-Git-Ponovno-baziranje">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Pag-branch-ng-Git-Pag-rebase">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%93%d0%b0%d0%bb%d1%83%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2-git-%d0%9f%d0%b5%d1%80%d0%b5%d0%b1%d0%b0%d0%b7%d0%be%d0%b2%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/Git-%e5%88%86%e6%94%af-%e5%8f%98%e5%9f%ba">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-P%c5%99eskl%c3%a1d%c3%a1n%c3%ad">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%93%d1%80%d0%b0%d0%bd%d0%b5%d1%9a%d0%b5-%d0%b2%d0%be-Git-%d0%a0%d0%b5%d0%b1%d0%b0%d0%b7%d0%b0">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Ga%c5%82%c4%99zie-Gita-Zmiana-bazy">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%93%d1%80%d0%b0%d0%bd%d0%b0%d1%9a%d0%b5-%d1%83-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d1%83-%d0%93%d0%b8%d1%82-%d0%a0%d0%b5%d0%b1%d0%b0%d0%b7%d0%b8%d1%80%d0%b0%d1%9a%d0%b5">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-%d0%b4%d0%b0-%d1%82%d0%b0%d1%80%d0%bc%d0%be%d2%9b%d0%bb%d0%b0%d0%bd%d0%b8%d1%88-%d2%9a%d0%b0%d0%b9%d1%82%d0%b0-%d0%b0%d1%81%d0%be%d1%81%d0%bb%d0%b0%d0%bd%d0%b8%d1%88">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/%e4%bd%bf%e7%94%a8-Git-%e5%88%86%e6%94%af-%e8%a1%8d%e5%90%88">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-Branching-Rebasing">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/%d8%b4%d8%a7%d8%ae%d9%87%e2%80%8c%d8%b3%d8%a7%d8%b2%db%8c-%d8%af%d8%b1-%da%af%db%8c%d8%aa-%d8%b1%db%8c%d8%a8%db%8c%d8%b3%e2%80%8c%da%a9%d8%b1%d8%af%d9%86" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-Branching-Rebasing">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-Branching-Rebasing">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-Branching-Rebasing">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Branches-no-Git-Rebase">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Ramifica%c3%a7%c3%a3o-do-Git-Rebasing">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-f%c3%b6rgreningar-Grenflytt">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git-Dallar%c4%b1-Yeniden-Temelleme-rebase">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit2-tl/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/tl/v2/Pagsisimula-Tungkol-sa-Bersyon-Kontrol">Pagsisimula</a></h2> <ol> <li> 1.1 <a href="/book/tl/v2/Pagsisimula-Tungkol-sa-Bersyon-Kontrol">Tungkol sa Bersyon Kontrol</a> </li> <li> 1.2 <a href="/book/tl/v2/Pagsisimula-Isang-Maikling-Kasaysayan-ng-Git">Isang Maikling Kasaysayan ng Git</a> </li> <li> 1.3 <a href="/book/tl/v2/Pagsisimula-Pangunahing-Kaalaman-sa-Git">Pangunahing Kaalaman sa Git</a> </li> <li> 1.4 <a href="/book/tl/v2/Pagsisimula-Ang-Command-Line">Ang Command Line</a> </li> <li> 1.5 <a href="/book/tl/v2/Pagsisimula-Pag-install-ng-Git">Pag-install ng Git</a> </li> <li> 1.6 <a href="/book/tl/v2/Pagsisimula-Unang-Beses-na-Pag-Setup-ng-Git">Unang Beses na Pag-Setup ng Git</a> </li> <li> 1.7 <a href="/book/tl/v2/Pagsisimula-Pagkuha-ng-Tulong">Pagkuha ng Tulong</a> </li> <li> 1.8 <a href="/book/tl/v2/Pagsisimula-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pagkuha-ng-Repositoryo-ng-Git">Mga Pangunahing Kaalaman sa Git</a></h2> <ol> <li> 2.1 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pagkuha-ng-Repositoryo-ng-Git">Pagkuha ng Repositoryo ng Git</a> </li> <li> 2.2 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pagtatala-ng-mga-Pagbabago-sa-Repositoryo">Pagtatala ng mga Pagbabago sa Repositoryo</a> </li> <li> 2.3 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pagtitingin-sa-Kasaysayan-ng-Commit">Pagtitingin sa Kasaysayan ng Commit</a> </li> <li> 2.4 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pag-Undo-ng-mga-Bagay">Pag-Undo ng mga Bagay</a> </li> <li> 2.5 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Paggawa-gamit-ang-mga-Remote">Paggawa gamit ang mga Remote</a> </li> <li> 2.6 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Pag-tag">Pag-tag</a> </li> <li> 2.7 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Mga-Alyas-sa-Git">Mga Alyas sa Git</a> </li> <li> 2.8 <a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/tl/v2/Pag-branch-ng-Git-Mga-Branch-sa-Maikling-Salita">Pag-branch ng Git</a></h2> <ol> <li> 3.1 <a href="/book/tl/v2/Pag-branch-ng-Git-Mga-Branch-sa-Maikling-Salita">Mga Branch sa Maikling Salita</a> </li> <li> 3.2 <a href="/book/tl/v2/Pag-branch-ng-Git-Batayan-ng-Pag-branch-at-Pag-merge">Batayan ng Pag-branch at Pag-merge</a> </li> <li> 3.3 <a href="/book/tl/v2/Pag-branch-ng-Git-Pamamahala-ng-Branch">Pamamahala ng Branch</a> </li> <li> 3.4 <a href="/book/tl/v2/Pag-branch-ng-Git-Mga-Daloy-ng-Trabaho-sa-Pag-branch">Mga Daloy ng Trabaho sa Pag-branch</a> </li> <li> 3.5 <a href="/book/tl/v2/Pag-branch-ng-Git-Remote-na-mga-Branch">Remote na mga Branch</a> </li> <li> 3.6 <a href="/book/tl/v2/Pag-branch-ng-Git-Pag-rebase" class="active">Pag-rebase</a> </li> <li> 3.7 <a href="/book/tl/v2/Pag-branch-ng-Git-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/tl/v2/Git-sa-Server-Ang-Mga-Protokol">Git sa Server</a></h2> <ol> <li> 4.1 <a href="/book/tl/v2/Git-sa-Server-Ang-Mga-Protokol">Ang Mga Protokol</a> </li> <li> 4.2 <a href="/book/tl/v2/Git-sa-Server-Pagkuha-ng-Git-sa-isang-Server">Pagkuha ng Git sa isang Server</a> </li> <li> 4.3 <a href="/book/tl/v2/Git-sa-Server-Ang-paglikha-ng-iyong-Pampublikong-Susi-ng-SSH">Ang paglikha ng iyong Pampublikong Susi ng SSH</a> </li> <li> 4.4 <a href="/book/tl/v2/Git-sa-Server-Pag-Setup-ng-Server">Pag-Setup ng Server</a> </li> <li> 4.5 <a href="/book/tl/v2/Git-sa-Server-Git-Daemon">Git Daemon</a> </li> <li> 4.6 <a href="/book/tl/v2/Git-sa-Server-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/tl/v2/Git-sa-Server-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/tl/v2/Git-sa-Server-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/tl/v2/Git-sa-Server-Mga-Opsyon-ng-Naka-host-sa-Third-Party">Mga Opsyon ng Naka-host sa Third Party</a> </li> <li> 4.10 <a href="/book/tl/v2/Git-sa-Server-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/tl/v2/Distributed-Git-Distributed-Workflows">Distributed Git</a></h2> <ol> <li> 5.1 <a href="/book/tl/v2/Distributed-Git-Distributed-Workflows">Distributed Workflows</a> </li> <li> 5.2 <a href="/book/tl/v2/Distributed-Git-Contributing-to-a-Project">Contributing to a Project</a> </li> <li> 5.3 <a href="/book/tl/v2/Distributed-Git-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 5.4 <a href="/book/tl/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/tl/v2/GitHub-Pag-setup-at-pagsasaayos-ng-Account">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/tl/v2/GitHub-Pag-setup-at-pagsasaayos-ng-Account">Pag-setup at pagsasaayos ng Account</a> </li> <li> 6.2 <a href="/book/tl/v2/GitHub-Pag-aambag-sa-isang-Proyekto">Pag-aambag sa isang Proyekto</a> </li> <li> 6.3 <a href="/book/tl/v2/GitHub-Pagpapanatili-ng-isang-Proyekto">Pagpapanatili ng isang Proyekto</a> </li> <li> 6.4 <a href="/book/tl/v2/GitHub-Pamamahala-ng-isang-organisasyon">Pamamahala ng isang organisasyon</a> </li> <li> 6.5 <a href="/book/tl/v2/GitHub-Pag-iiskrip-sa-GitHub">Pag-iiskrip sa GitHub</a> </li> <li> 6.6 <a href="/book/tl/v2/GitHub-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pagpipili-ng-Rebisyon">Mga Git na Kasangkapan</a></h2> <ol> <li> 7.1 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pagpipili-ng-Rebisyon">Pagpipili ng Rebisyon</a> </li> <li> 7.2 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Staging-na-Interactive">Staging na Interactive</a> </li> <li> 7.3 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pag-stash-at-Paglilinis">Pag-stash at Paglilinis</a> </li> <li> 7.4 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pag-sign-sa-Iyong-Trabaho">Pag-sign sa Iyong Trabaho</a> </li> <li> 7.5 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Paghahanap">Paghahanap</a> </li> <li> 7.6 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pagsulat-muli-ng-Kasaysayan">Pagsulat muli ng Kasaysayan</a> </li> <li> 7.7 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Ang-Reset-Demystified">Ang Reset Demystified</a> </li> <li> 7.8 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Advanced-na-Pag-merge">Advanced na Pag-merge</a> </li> <li> 7.9 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Ang-Rerere">Ang Rerere</a> </li> <li> 7.10 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pagdebug-gamit-ang-Git">Pagdebug gamit ang Git</a> </li> <li> 7.11 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Mga-Submodule">Mga Submodule</a> </li> <li> 7.12 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pagbibigkis">Pagbibigkis</a> </li> <li> 7.13 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Pagpapalit">Pagpapalit</a> </li> <li> 7.14 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Kredensyal-na-ImbakanCredential-Storage">Kredensyal na ImbakanCredential Storage</a> </li> <li> 7.15 <a href="/book/tl/v2/Mga-Git-na-Kasangkapan-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Kompigurasyon-ng-Git">Pag-aangkop sa Sariling Pangangailagan ng Git</a></h2> <ol> <li> 8.1 <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Kompigurasyon-ng-Git">Kompigurasyon ng Git</a> </li> <li> 8.2 <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Mga-Katangian-ng-Git">Mga Katangian ng Git</a> </li> <li> 8.3 <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Mga-Hook-ng-Git">Mga Hook ng Git</a> </li> <li> 8.4 <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-An-Example-Git-Enforced-Policy">An Example Git-Enforced Policy</a> </li> <li> 8.5 <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/tl/v2/Ang-Git-at-iba-pang-mga-Sistema-Git-bilang-isang-Kliyente">Ang Git at iba pang mga Sistema</a></h2> <ol> <li> 9.1 <a href="/book/tl/v2/Ang-Git-at-iba-pang-mga-Sistema-Git-bilang-isang-Kliyente">Git bilang isang Kliyente</a> </li> <li> 9.2 <a href="/book/tl/v2/Ang-Git-at-iba-pang-mga-Sistema-Paglilipat-sa-Git">Paglilipat sa Git</a> </li> <li> 9.3 <a href="/book/tl/v2/Ang-Git-at-iba-pang-mga-Sistema-Buod">Buod</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Plumbing-and-Porcelain">Mga Panloob ng GIT</a></h2> <ol> <li> 10.1 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Plumbing-and-Porcelain">Plumbing and Porcelain</a> </li> <li> 10.2 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Git-Objects">Git Objects</a> </li> <li> 10.3 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Git-References">Git References</a> </li> <li> 10.4 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Packfiles">Packfiles</a> </li> <li> 10.5 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Ang-Refspec">Ang Refspec</a> </li> <li> 10.6 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Transfer-Protocols">Transfer Protocols</a> </li> <li> 10.7 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Pagpapanatili-At-Pagbalik-ng-Datos">Pagpapanatili At Pagbalik ng Datos</a> </li> <li> 10.8 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Mga-Variable-sa-Kapaligiran">Mga Variable sa Kapaligiran</a> </li> <li> 10.9 <a href="/book/tl/v2/Mga-Panloob-ng-GIT-Buod">Buod</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Grapikal-Interfaces">Appendix A: Git in Other Environments</a></h2> <ol> <li> A1.1 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Grapikal-Interfaces">Grapikal Interfaces</a> </li> <li> A1.2 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Git-sa-Eclipse">Git sa Eclipse</a> </li> <li> A1.4 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash">Git in Bash</a> </li> <li> A1.5 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.6 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Git-sa-Powershell">Git sa Powershell</a> </li> <li> A1.7 <a href="/book/tl/v2/Appendix-A:-Git-in-Other-Environments-Summary">Summary</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/tl/v2/Appendix-B:-Pag-embed-ng-Git-sa-iyong-Mga-Aplikasyon-Command-line-Git">Appendix B: Pag-embed ng Git sa iyong Mga Aplikasyon</a></h2> <ol> <li> A2.1 <a href="/book/tl/v2/Appendix-B:-Pag-embed-ng-Git-sa-iyong-Mga-Aplikasyon-Command-line-Git">Command-line Git</a> </li> <li> A2.2 <a href="/book/tl/v2/Appendix-B:-Pag-embed-ng-Git-sa-iyong-Mga-Aplikasyon-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/tl/v2/Appendix-B:-Pag-embed-ng-Git-sa-iyong-Mga-Aplikasyon-JGit">JGit</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Setup-at-Config">Appendix C: Mga Kautusan ng Git</a></h2> <ol> <li> A3.1 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Setup-at-Config">Setup at Config</a> </li> <li> A3.2 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Pagkuha-at-Paglikha-ng-Mga-Proyekto">Pagkuha at Paglikha ng Mga Proyekto</a> </li> <li> A3.3 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Pangunahing-Snapshotting">Pangunahing Snapshotting</a> </li> <li> A3.4 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Branching-at-Merging">Branching at Merging</a> </li> <li> A3.5 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Pagbabahagi-at-Pagbabago-ng-mga-Proyekto">Pagbabahagi at Pagbabago ng mga Proyekto</a> </li> <li> A3.6 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Pagsisiyasat-at-Paghahambing">Pagsisiyasat at Paghahambing</a> </li> <li> A3.7 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Patching">Patching</a> </li> <li> A3.9 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Email">Email</a> </li> <li> A3.10 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-External-Systems">External Systems</a> </li> <li> A3.11 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Administration">Administration</a> </li> <li> A3.12 <a href="/book/tl/v2/Appendix-C:-Mga-Kautusan-ng-Git-Pagtutuberong-mga-Utos">Pagtutuberong mga Utos</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>3.6 Pag-branch ng Git - Pag-rebase</h1> <div> <h2 id="_rebasing">Pag-rebase</h2> <div class="paragraph"> <p> Sa Git, mayroong dalawang pangunahing mga paraan upang pagsamahin ang mga pagbabago mula sa isang branch patungo sa iba: ang <code>merge</code> at ang <code>rebase</code>. Sa seksyong ito matututo ka kung ano ang pag-rebase, paano ito gawin, bakit ito ay isang medyo kahanga-hangang kasangkapan, at sa anong kaso mo hindi gugustuhing gamitin ito.</p> </div> <div class="sect3"> <h3 id="_ang_pangunahing_rebase">Ang Pangunahing Rebase</h3> <div class="paragraph"> <p>Kung ikaw ay pupunta pabalik sa kamakailang halimbawa mula sa <a href="/book/tl/v2/ch00/_basic_merging">Batayan ng Pag-merge</a>, maaari mong tingnan na nahiwalay mo ang iyong trabaho at gumawa ng mga commit sa dalawang magkaibang mga branch.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/basic-rebase-1.png" alt="Simpleng divergent na kasaysayan."> </div> <div class="title">Figure 35. Simpleng divergent na kasaysayan</div> </div> <div class="paragraph"> <p>Ang pinakamadaling paraan upang mapagsama ang mga branch, bilang nasakop na natin, ay ang <code>merge</code> na utos. Ito ay gumagawa ng isang three-way na merge sa pagitan ng dalawang pinakabagong mga snapshot ng branch (<code>C3</code> at <code>C4</code>) at ang pinakakamakailang karaniwang ninuno ng dalawa (<code>C2</code>), kaya gumagawa ng isang panibagong snapshot (at commit).</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/basic-rebase-2.png" alt="Pag-merge upang mapagsama ang nahiwalay na kasaysayan ng trabaho."> </div> <div class="title">Figure 36. Pag-merge upang mapagsama ang nahiwalay na kasaysayan ng trabaho</div> </div> <div class="paragraph"> <p>Subalit, mayroong ibang paraan: maaari mong kunin ang patch ng pagbabago na napakilala sa <code>C4</code> at ilapat muli ito sa itaas ng <code>C3</code>. Sa Git, ito ay tinatawag na <em>rebasing</em>. Gamit ang <code>rebase</code> na utos, maaari mong kunin ang lahat ng mga pagbabago na na-commit sa isang branch at i-replay ang mga ito sa iba pa.</p> </div> <div class="paragraph"> <p>Sa halimbawang ito, papatakbuhin mo ang sumusunod:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout experiment $ git rebase master First, rewinding head to replay your work on top of it... Applying: added staged command</code></pre> </div> </div> <div class="paragraph"> <p>Gumagana ito sa pamamagitan ng pagpunta sa karaniwang ninuno ng dalawang mga branch (yung isa ay kung saan nandoon ka at yung isa ay kung saan ka magre-rebase), kukunin ang diff na napakilala sa bawat commit ng branch kung saan nandoon ka, isi-save ang mga diff na iyon sa pansamantalang mga file, iri-reset ang kasalukuyang branch sa parehong commit bilang branch na iyong iri-rebase, at sa huli ay ilalapat ang bawat pagbabago.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/basic-rebase-3.png" alt="Pag-rebase ng pagbabago na napakilala sa `C4` patungo sa `C3`."> </div> <div class="title">Figure 37. Pag-rebase ng pagbabago na napakilala sa <code>C4</code> patungo sa <code>C3</code> </div> </div> <div class="paragraph"> <p>Sa puntong ito, maaari kang pumunta pabalik sa <code>master</code> na branch at gumawa ng fast-forward na merge.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout master $ git merge experiment</code></pre> </div> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/basic-rebase-4.png" alt="Pag-fast-forward ng master na branch."> </div> <div class="title">Figure 38. Pag-fast-forward ng master na branch</div> </div> <div class="paragraph"> <p>Ngayon, ang snapshot na itinuro ng <code>C4'</code> ay eksaktong kapareho sa isa na itinuro ng <code>C5</code> sa merge na halimbawa. Walang pagkakaiba sa resulta ng integrasyon, ngunit ang pag-rebase ay ginagawang mas malinis ang kasaysayan. Kung iyong susuriin ang log ng isang na-rebase na branch, magmumukha itong isang linear na kasaysayan: lumalabas na ang lahat ng trabaho ay nangyari na nakaserye, kahit ito ay orihinal na nangyari na nakahilera.</p> </div> <div class="paragraph"> <p>Kadalasan, gagawin mo ito upang siguraduhing ang iyong mga commit ay nalapat nang malinis sa isang remote na branch — marahil sa isang proyekto kung saan sinusubukan mong mag-ambag ngunit iyong hindi mo na pinapanatili. Sa kasong ito, gagawin mo ang iyong trabaho sa isang branch at pagkatapos ay iri-rebase ang iyong trabaho sa <code>origin/master</code> kapag ikaw ay handa nang isumite ang iyong mga patch sa pangunahing proyekto. Sa paraan iyon, ang tagapanatili ay hindi na kailangang gumawa ng anumang pagsasama na trabaho — isang fast-forward o isang malinis na paglapat lamang.</p> </div> <div class="paragraph"> <p>Tandaan na ang snapshot na itinuro ng huling commit na nagtapos sa iyo, kung ito ay ang huli sa na-rebase na mga commit para sa isang rebase o ang huling merge na commit pagkatapos ng isang merge, ay ang parehong snapshot - ang kasaysayan lamang ang naiiba. Ang pag-rebase ay iri-replay ang mga pagbabago mula sa isang linya ng trabaho patungo sa iba sa pagkakaayos base sa kanilang pagpakilala, samantalang ang pag-merge ay kinukuha ang mga endpoint at sama-samang imi-merge ang mga ito.</p> </div> </div> <div class="sect3"> <h3 id="_maraming_kagiliw_giliw_na_mga_rebase">Maraming Kagiliw-giliw na mga Rebase</h3> <div class="paragraph"> <p>Maaari ka ring magkaroon ng iyong rebase na replay sa anuman maliban sa rebase na target na branch. Gamitin ang isang kasaysayan katulad ng <a href="/book/tl/v2/ch00/rbdiag_e">Isang kasaysayan na may isang paksa na naka-branch off sa ibang paksa na branch</a>, bilang halimbawa. Ikaw ay nag-branch ng isang paksa na branch (<code>server</code>) upang magdagdag ng ilang server-side na functionality sa iyong proyekto, at gumawa ng isang commit. Pagkatapos, ikaw ay nag-branch off nito upang gawin ang mga pagbabago sa client-side (<code>client</code>) at nag-commit ng ilang beses. Sa wakas, ikaw ay bumalik sa iyong server na branch at gumawa ng ilang mga commit.</p> </div> <div id="rbdiag_e" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/interesting-rebase-1.png" alt="Isang kasaysayan na may isang paksa na naka-branch off sa ibang paksa na branch."> </div> <div class="title">Figure 39. Isang kasaysayan na may isang paksa na naka-branch off sa ibang paksa na branch</div> </div> <div class="paragraph"> <p>Ipagpalagay na ikaw na nakapagpasya na gusto mong i-merge ang iyong client-side na mga pagbabago sa iyong mainline para sa isang release, ngunit gusto mong pigilan ang mga pagbabago ng server-side hanggang ito ay mas lalo pang nasubukan. Maaari mong kunin ang mga pagbabago na wala sa server (<code>C8</code> at <code>C9</code>) at i-replay ang mga ito sa iyong <code>master</code> na branch gamit ang <code>--onto</code> na opsyon ng <code>git rebase</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git rebase --onto master server client</code></pre> </div> </div> <div class="paragraph"> <p>Ang ibig talagang sabihin nito ay, “Kunin ang <code>client</code> na branch, alamin ang mga patch mula nung humiwalay ito mula sa <code>server</code> na branch, at i-replay ang mga patch na ito sa <code>client</code> na branch animo ito ay direktang nakabase sa <code>master</code> na branch.” Ito ay medyo kumplikado, ngunit ang resulta ay talagang kamangha-mangha.</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/interesting-rebase-2.png" alt="Pag-rebase ng isang paksa na naka-branch off sa ibang paksa na branch."> </div> <div class="title">Figure 40. Pag-rebase ng isang paksa na naka-branch off sa ibang paksa na branch</div> </div> <div class="paragraph"> <p>Ngayon maaari ka nang mag-fast-forward sa iyong <code>master</code> na branch (tingnan ang <a href="/book/tl/v2/ch00/rbdiag_g">Pag-fast-forward ng iyong master na branch upang isama ang mga pagbabago sa kliyente na branch</a>):</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout master $ git merge client</code></pre> </div> </div> <div id="rbdiag_g" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/interesting-rebase-3.png" alt="Pag-fast-forward ng iyong master na branch upang isama ang mga pagbabago sa kliyente na branch."> </div> <div class="title">Figure 41. Pag-fast-forward ng iyong master na branch upang isama ang mga pagbabago sa kliyente na branch</div> </div> <div class="paragraph"> <p>Sabihin nating ikaw ay nakapagpasyang mag-pull din sa iyong server na branch. Maaari mong i-rebase ang server na branch sa <code>master</code> na branch nang hindi kailangang unang mag-check out nito sa pamamagitan ng pagpapatakbo ng <code>git rebase &lt;basebranch&gt; &lt;topicbranch&gt;</code> — na nagchi-check out ng paksa na branch (sa kasong ito, <code>server</code>) para sa iyo at iri-replay ito sa base na branch (<code>master</code>):</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git rebase master server</code></pre> </div> </div> <div class="paragraph"> <p>Ito ay iri-replay ang iyong <code>server</code> na trabaho sa itaas ng iyong <code>master</code> na trabaho, na ipinapakita sa <a href="/book/tl/v2/ch00/rbdiag_h">Pag-rebase ng iyong server na branch sa itaas ng iyong master na branch</a>.</p> </div> <div id="rbdiag_h" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/interesting-rebase-4.png" alt="Pag-rebase ng iyong server na branch sa itaas ng iyong master na branch."> </div> <div class="title">Figure 42. Pag-rebase ng iyong server na branch sa itaas ng iyong master na branch</div> </div> <div class="paragraph"> <p>Pagkatapos, maaari mong i-fast-forward ang base na branch (<code>master</code>): Then, you can fast-forward the base branch (<code>master</code>):</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git checkout master $ git merge server</code></pre> </div> </div> <div class="paragraph"> <p>Maaari mong tanggalin ang <code>client</code> at <code>server</code> na mga branch dahil lahat ang trabaho ay napagsama-sama na at hindi mo na kailangan ang mga ito, iniiwan ang iyong kasaysayan para sa buong proseso na nagmumukhang katulad ng <a href="/book/tl/v2/ch00/rbdiag_i">Huling kasaysayan ng commit</a>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git branch -d client $ git branch -d server</code></pre> </div> </div> <div id="rbdiag_i" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/interesting-rebase-5.png" alt="Huling kasaysayan ng commit."> </div> <div class="title">Figure 43. Huling kasaysayan ng commit</div> </div> </div> <div class="sect3"> <h3 id="_rebase_peril">Ang mga Panganib ng Pag-rebase</h3> <div class="paragraph"> <p> Ahh, ngunit ang kaligayahan ng pag-rebase ay mayroon ding kakulangan, na maaaring mabuo sa isang linya:</p> </div> <div class="paragraph"> <p><strong>Huwag mag-rebase ng mga commit na umiiral sa labas ng iyong repositoryo.</strong></p> </div> <div class="paragraph"> <p>Kung susundin mo ang patnubay na iyon, magiging maayos ka. Kung hindi, kasusuklaman ka ng mga tao, at kakamuhian ka ng iyong mga kaibigan at pamilya.</p> </div> <div class="paragraph"> <p>Kapag ikaw ay nag-rebase ng mga bagay, ikaw ay lumilisan sa umiiral na mga commit at gumagawa ng mga panibago na kahawig ngunit naiiba. Kung magpu-push ka ng mga commit saanman at ang iba ay magpu-pull down ng mga ito at magbabase sa trabaho nito, at pagkatapos ay isusulat mo muli ang mga commit na iyon gamit ang <code>git rebase</code> at i-push muli ang mga ito, ang iyong mga katulong ay kailangang mag merge muli ng kanilang trabaho at ang mga bagay ay magugulo kapag sinubukan mong mag-pull sa kanilang trabaho patungo pabalik sa iyo.</p> </div> <div class="paragraph"> <p>Tumingin tayo sa isang halimbawa kung papaano ang pag-rebase ng trabaho na iyong ginawang publiko ay maaaring magsanhi ng mga problema. Ipagpalagay na ikaw ay nag-clone mula sa isang sentral na server at pagkatapos ay gumawa ng ilang trabaho sa iyon. Ang iyong kasaysayan ng commit ay magmumukhang katulad nito:</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/perils-of-rebasing-1.png" alt="Mag-clone ng isang repositoryo, at magbase ng ilang trabaho nito."> </div> <div class="title">Figure 44. Mag-clone ng isang repositoryo, at magbase ng ilang trabaho nito</div> </div> <div class="paragraph"> <p>Ngayon, may iba pang gumagawa ng higit pang trabaho na nagsasama ng isang merge, at nagpu-push ng trabahong iyon sa sentral na server. Kinuha mo ito at nag-merge ng bagong remote na branch sa iyong trabaho, ginagawang magkamukha nito ang iyong kasaysayan:</p> </div> <div class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/perils-of-rebasing-2.png" alt="Kumuha ng maraming mga commit, at i-merge ang mga ito sa iyong trabaho."> </div> <div class="title">Figure 45. Kumuha ng maraming mga commit, at i-merge ang mga ito sa iyong trabaho</div> </div> <div class="paragraph"> <p>Susunod, ang tao na nag-push ng na-merge na trabaho ay nagpasyang bumalik at sa halip ay mag-rebase ng kanilang trabaho; gumawa sila ng isang <code>git push --force</code> upang sapawan ang kasaysayan sa server. Ikaw ngayon ay nag-fetch mula sa server na iyon, hinihila pababa ang mga bagong commit.</p> </div> <div id="_pre_merge_rebase_work" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/perils-of-rebasing-3.png" alt="May isang tao na nagpu-push ng na-rebase na mga commit, iniiwanan ang mga commit kung saan mo binase ang iyong trabaho."> </div> <div class="title">Figure 46. May isang tao na nagpu-push ng na-rebase na mga commit, iniiwanan ang mga commit kung saan mo binase ang iyong trabaho</div> </div> <div class="paragraph"> <p>Ngayon kayong dalawa ay nasa mahirap na kalagayan. Kung gagawa ka ng isang <code>git pull</code>, ikaw ay lilikha ng isang merge na commit na naglalaman ng parehong mga linya ng kasaysayan, at ang iyong repositoryo ay magmumukhang katulad nito:</p> </div> <div id="_merge_rebase_work" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/perils-of-rebasing-4.png" alt="Ikaw ay muling nag-merge sa parehong trabaho patungo sa isang panibagong merge na commmit."> </div> <div class="title">Figure 47. Ikaw ay muling nag-merge sa parehong trabaho patungo sa isang panibagong merge na commmit</div> </div> <div class="paragraph"> <p>Kung magpapatakbo ka ng isang <code>git log</code> kapag ang iyong kasaysayan ay magmumukhang katulad nito, makikita mo ang dalawang mga commit na mayroong parehong may-akda, petsa, at mensahe, na kung saan ay nakalilito. At saka, kung ipu-push mo ang kasaysayang ito pabalik sa server, ipapakilala mo ulit ang lahat ng mga na-rebase na commit na iyon sa sentral na server, na kung saan ay tuluyan pang nakakalito sa mga tao. Medyo ligtas magpalagay na ang ibang developer ay hindi gusto ang <code>C4</code> at <code>C6</code> sa kasaysayan; iyan ang dahilan kung bakit sila nag-rebase sa simula pa lang.</p> </div> </div> <div class="sect3"> <h3 id="_rebase_rebase">Mag-rebase Kung Ikaw ay Mag-rebase</h3> <div class="paragraph"> <p>Kung <strong>talagang</strong> natagpuan mo iyong sarili sa sitwasyong katulad nito, ang Git ay may ilang higit pang salamangka na maaaring makatulong sa iyo. Kung may tao sa iyong team na sapilitang nagpu-push ng mga pagbabago na nag-o-overwrite ng trabaho kung saan nakabase ang iyong mga ginawa, ang iyong hamon ay ang malaman kung ano ang sa iyo at kung ano ang nasulat muli nila.</p> </div> <div class="paragraph"> <p>Lumilitaw na sa karagdagan sa checksum ng commit SHA-1, ang Git ay nagkakalkula rin ng isang checksum na nakabase lamang sa patch na napakilala sa commit. Ito ay tinatawag na isang “patch-id”.</p> </div> <div class="paragraph"> <p>Kung ikaw ay magpu-pull down ng trabaho na muling isinulat at iri-rebase ito sa itaas ng bagong mga commit mula sa iyong kasosyo, ang Git ay kadalasang matagumpay na nalalaman kung ano ang katangi-tanging sa iyo at ilalapat ang mga ito pabalik sa itaas ng bagong branch.</p> </div> <div class="paragraph"> <p>Halimbawa, sa nakaraang sitwasyon, kung sa halip na gumawa ng isang merge kapag tayo ay nasa <a href="/book/tl/v2/ch00/_pre_merge_rebase_work">May isang tao na nagpu-push ng na-rebase na mga commit, iniiwanan ang mga commit kung saan mo binase ang iyong trabaho</a> papatakbuhin natin ang <code>git rebase teamone/master</code>, ang Git ay:</p> </div> <div class="ulist"> <ul> <li> <p>Tutukuyin kung anong trabaho ang katangi-tangi sa ating branch (C2, C3, C4, C6, C7)</p> </li> <li> <p>Tutukuyin kung ano ang hindi merge na mga commit (C2, C3, C4)</p> </li> <li> <p>Tutukuyin kung ano ang hindi naisulat muli sa target na branch (C2 at C3 lamang, dahil ang C4 ay kaparehong patch sa C4')</p> </li> <li> <p>Ilalapat ang mga commit na iyon sa itaas ng <code>teamone/master</code></p> </li> </ul> </div> <div class="paragraph"> <p>Kaya sa halip sa resulta na nakikita natin sa <a href="/book/tl/v2/ch00/_merge_rebase_work">Ikaw ay muling nag-merge sa parehong trabaho patungo sa isang panibagong merge na commmit</a>, tayo ay magtatapos na may bagay na mas katulad sa <a href="/book/tl/v2/ch00/_rebase_rebase_work">Pag-rebase sa itaas ng na-force-push na rebase ng trabaho</a>.</p> </div> <div id="_rebase_rebase_work" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/perils-of-rebasing-5.png" alt="Pag-rebase sa itaas ng na-force-push na rebase ng trabaho."> </div> <div class="title">Figure 48. Pag-rebase sa itaas ng na-force-push na rebase ng trabaho</div> </div> <div class="paragraph"> <p>Ito ay gumagana lamang kung ang C4 at C4' na ginawa ng iyong kasosyo ay halos eksaktong magkatugma na patch. Kung hindi ay ang rebase ay hindi makakapagsabi na ito ay isang kopya at magdaragdag ng ibang katulad ng C4 na patch (na marahil ay mabibigong malinis na maglapat, dahil ang mga pagbabago ay marahil nandoon na).</p> </div> <div class="paragraph"> <p>Maaari mo ring pasimplihin ito sa pamamagitan ng isang <code>git pull --rebase</code> sa halip na isang normal na <code>git pull</code>. O maaari mong manu-manong gawin ito gamit ang isang <code>git fetch</code> na sinusundan ng isang <code>git rebase teamone/master</code> sa kasong ito.</p> </div> <div class="paragraph"> <p>Kung ikaw ay gumagamit ng <code>git pull</code> at gustong i-<code>--rebase</code> ang default, maaari mong itakda ang halaga ng <code>pull.rebase</code> na config gamit ang kagaya ng <code>git config --global pull.rebase true</code>.</p> </div> <div class="paragraph"> <p>Kung ituturing mo ang pag-rebase bilang isang paraan upang maglinis at magtrabaho sa mga commit bago mo i-push ang mga ito, at kung ikaw ay magri-rebase lamang ng mga commit na hindi pampublikong magagamit, ikaw ay magiging maayos lamang. Kung ikaw ay magri-rebase ng mga commit na pampublikong nai-push na, at ang mga tao ay bumabase ng kanilang trabaho sa mga commit na iyon, ikaw ay maaaring mapasabak sa isang nakakabigong panganib, at suklam ng iyong mga kasamahan sa koponan.</p> </div> <div class="paragraph"> <p>Kung ikaw o isang kasosyo ay nakatuklas na kinakailangan ito sa isang punto, siguraduhing ang lahat ay nakakaalam kung paano patakbuhin ang <code>git pull --rebase</code> upang subukang mas pasimplehin pa ang sakit nito pagkatapos.</p> </div> </div> <div class="sect3"> <h3 id="_rebase_vs_merge">Rebase vs. Merge</h3> <div class="paragraph"> <p> Ngayong nakita mo na ang pag-rebase at pag-merge na kumikilos, baka ikaw ay nagtataka kung ano ang mas mabuti. Bago natin maaaring sagutin ito, umatras muna tayo at pag-usapan ang tungkol sa ibig sabihin ng kasaysayan.</p> </div> <div class="paragraph"> <p>Isang pananaw nito ay ang iyong kasaysayan ng commit sa repositoryo ay isang <strong>rekord kung ano ang tunay na nangyari.</strong> Ito ay isang makasaysayang dokumento, mahalaga sa sarili nitong karapatan, at hindi dapat mabago. Mula sa anggulong ito, ang pagbabago sa kasaysayan ng commit ay halos lapastangan sa diyos; ikaw ay <em>nagsisinungaling</em> tungkol sa kung ano ang tunay na naganap. Kaya ano kung mayroong isang magulong serye ng merge na mga commit? Iyon ang nangyari, at ang repositoryo ay kailangang i-preserba iyon para sa angkan.</p> </div> <div class="paragraph"> <p>Ang humahadlang na pananaw ay ang kasaysayan ng commit ay ang <strong>istorya kung papaano nagawa ang iyong proyekto.</strong> Hindi mo iaambag ang unang draft ng isang aklat, at ang manwal para sa kung papaano panatilihin ang iyong software ay nararapat na ingatan ang pag-edit. Ito ang kampo na gumagamit ng mga kasangkapan katulad ng rebase at filter-branch upang magtalakay sa istorya sa paraan na pinakamainam para sa mga mambabasa sa hinaharap.</p> </div> <div class="paragraph"> <p>Ngayon, sa tanong kung alin sa pag-merge o pag-rebase ang mas mabuti: sana makita mo na ito ay hindi ganoon ka simple. Ang Git ay isang makapangyarihan na kasangkapan, at nagpapahintulot sa iyo upang gumawa ng maraming mga bagay at gamit ang iyong kasaysayan, ngunit bawat koponan at bawat proyekto ay magkakaiba. Ngayon na alam mo na kung paano gumagana ang dalawang bagay na ito, nakasalalay sa iyo na magpasya kung ano ang pinakamainam para sa iyong partikular na sitwasyon.</p> </div> <div class="paragraph"> <p>Sa karaniwan ang paraan upang makakuha ng pinakamabuti sa dalawang mundo ay ang pag-rebase ng mga lokal na pagbabago na ginawa mo ngunit hindi pa naibahagi bago mo i-push ang mga ito upang linisin ang iyong istorya, ngunit huwag mag-rebase ng kahit ano na na-push mo kahit saan.</p> </div> </div> <div id="nav"><a href="/book/tl/v2/Pag-branch-ng-Git-Remote-na-mga-Branch">prev</a> | <a href="/book/tl/v2/Pag-branch-ng-Git-Buod">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