CINXE.COM

Git - Mga Katangian ng Git

<!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 - Mga Katangian ng Git</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/Customizing-Git-Git-Attributes">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99i-F%c9%99rdil%c9%99%c5%9fdirm%c9%99k-Git-Atributlar%c4%b1">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/Git-%d0%bd%d0%b0-%d0%bd%d0%b8%d1%81%d0%ba%d0%be-%d0%bd%d0%b8%d0%b2%d0%be-Git-%d0%be%d0%b1%d0%b5%d0%ba%d1%82%d0%b8">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-einrichten-Git-Attribute">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Personalizaci%c3%b3n-de-Git-Git-Attributes">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Personnalisation-de-Git-Attributs-Git">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%82%ab%e3%82%b9%e3%82%bf%e3%83%9e%e3%82%a4%e3%82%ba-Git-%e3%81%ae%e5%b1%9e%e6%80%a7">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git%eb%a7%9e%ec%b6%a4-Git-Attributes">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-aanpassen-Git-attributen">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%9d%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-Git-%d0%90%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82%d1%8b-Git">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Prilagoditev-Gita-Atributi-Git">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Mga-Katangian-ng-Git">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%9d%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d0%90%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82%d0%b8-Git">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/%e8%87%aa%e5%ae%9a%e4%b9%89-Git-Git-%e5%b1%9e%e6%80%a7">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Customizing-Git-Atributy-Git">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%9f%d0%b5%d1%80%d1%81%d0%be%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%98%d0%b0-%d0%bd%d0%b0-Git-Git-%d0%90%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82%d0%b8">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Dostosowywanie-Gita-Git-Attributes">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%9f%d1%80%d0%b8%d0%bb%d0%b0%d0%b3%d0%be%d1%92%d0%b0%d0%b2%d0%b0%d1%9a%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%b0-%d0%93%d0%b8%d1%82-%d0%93%d0%b8%d1%82-%d0%b0%d1%82%d1%80%d0%b8%d0%b1%d1%83%d1%82%d0%b8">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Customizing-Git-Git-Attributes">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/Customizing-Git-Git-Attributes">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Customizing-Git-Git-Attributes">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/Customizing-Git-Git-Attributes" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Kostumisasi-Git-Git-Attributes">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Customizing-Git-Git-Attributes">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Customizing-Git-Git-Attributes">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Customizing-Git-Git-Attributes">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Personalizar-o-Git-Git-Attributes">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Customizing-Git-Git-Attributes">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git%e2%80%99i-%c3%96zelle%c5%9ftirmek-Git-Nitelikleri">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">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" class="active">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>8.2 Pag-aangkop sa Sariling Pangangailagan ng Git - Mga Katangian ng Git</h1> <div> <h2 id="_mga_katangian_ng_git">Mga Katangian ng Git</h2> <div class="paragraph"> <p> Ang ilan sa mga setting na ito ay maaari ding tinukoy para sa isang landas, kaya inilapat ng Git ang mga setting na iyon para lamang sa isang subdirectory o subset ng mga file. Ang mga setting na tukoy sa landas na ito ay tinatawag na mga katangian ng Git at nakatakda sa alinman sa <code>.gitattributes</code> na file sa isa sa mga direktoryo mo (sa kasanayan ito ay ang ugat ng iyong proyekto) o sa <code>.git/info/attributes</code> na file kung hindi mo gusto ang mga katangian ng file na naka-commit sa iyong proyekto.</p> </div> <div class="paragraph"> <p>Sa paggamit ng mga katangian, maaari mong gawin ang mga bagay tulad ng tukuyin ang mga hiwalay na estratehiya ng pagcommit para sa mga indibidwal na file o mga direktoryo sa iyong proyekto, sabihin sa Git kung paano i-diff ang mga file na di-teksto, o magkaroon ng nilalaman ng Filter ng Git bago mo itong i-check-in o i-check-out sa Git. Sa seksyon na ito, matututunan mo ang tungkol sa ilang mga katangian na maaari mong itakda sa iyong mga landas sa iyong proyektong Git at tingnan ang kakaunting mga halimbawa sa paggamit ng katangian na ito sa pagsasanay.</p> </div> <div class="sect3"> <h3 id="_mga_file_na_binary">Mga File na Binary</h3> <div class="paragraph"> <p> Ang isang magandang paraan para sa kung saan maaari mong gamitin ang mga katangian ng Git ay ang pagsasabi sa Git na ang mga file ay binary (sa mga iilang kaso maaring hindi nito malaman) at pagbibigay ng Git ng espesyal na mga tagubilin tungkol sa kung paano pangasiwaan ang mga file na iyon For instance, some text files may be machine generated and not diffable, whereas some binary files can be diffed. Halimbawa, ang ilang mga tekstong file ay maaaring ginawa ng makina at hindi maaring i-diff, samantalang ang ilang mga binary file ay maaaring i-diff. Makikita mo kung paano sabihin sa Git na kung ano ang nararapat.</p> </div> <div class="sect4"> <h4 id="_identifying_binary_files">Identifying Binary Files</h4> <div class="paragraph"> <p>Ilang mga file ay parang mga file na teksto ngunit para sa lahat ng mga sadya at layunin ay dapat tratuhin bilang binary data. Halimbawa, ang proyektong Xcode sa Mac ay naglalaman ng file na nagtatapos sa <code>.pbxproj</code>, kung saan ay isang karaniwang JSON (naka-format sa malinaw na tekstong Javascript na data) dataset na isinulat sa disk ng IDE, kung saan ay nagrerecord sa iyong mga setting ng paggawa at iba pa. Sa totoo lang kahit na ito ay isang tekstong file (dahil ang lahat ng mga ito ay UTF-8), hindi mo nais na tratuhin ito bilang ganyan dahil ito ay talagang isang magaan na database - hindi mo maaaring pagsamahin ang mga nilalaman kung binago ito ng dalawang tao, at ang pag-diff sa pangkalahatan ay hindi rin makakatulong. Ang file ay sinadya upang maubos ng isang makina Sa kakanyahan, nais mong tratuhin ito tulad ng isang binary file.</p> </div> <div class="paragraph"> <p>Para sabihin sa Git na tratuhin ang lahat ng <code>pbxproj</code> na mga file bilang data na binary, idagdag ang mga sumusunod na linya sa iyong <code>.gitattributes</code> na file:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">*.pbxproj binary</code></pre> </div> </div> <div class="paragraph"> <p>Sa ngayon, hindi sisikapin ng Git na palitan o ayusin ang mga isyu ng CRLF; ni hindi nito susubukang magkalkula o i-print ang isang diff para sa mga pagbabago sa file na ito kung ikaw ang magpapatakbo ng <code>git show</code> o <code>git diff</code> sa iyong proyekto.</p> </div> </div> <div class="sect4"> <h4 id="_diffing_binary_files">Diffing Binary Files</h4> <div class="paragraph"> <p>Maaari mo ring gamitin ang pag-aandar ng mga katangian ng Git upang epektibong i-diff ang mga file na binary. Gawin mo ito sa pamamagitan ng pagsasabi sa Git kung paano palitan ang iyong data na binary para sa tekstong format na pwedeng ikumpara sa normal na diff.</p> </div> <div class="paragraph"> <p>Una, gagamitin mo ang pamamaraan na ito upang malutas ang isa sa mga pinaka nakakainis na mga problema na kilala sa sangkatauhan: pagkokontrol sa bersyon ng mga dokumentong Microsoft Word. Alam ng lahat na ang Word ay ang pinaka-kasuklam-suklam na editor, ngunit nakakatwa na ginagamit pa ng lahat ito. Kung gusto mong kontrolin ang bersyon ng mga dokumentong Word, maaari mong ilagay ang mga ito sa isang repositoryo ng Git at parati mo itong i-commit kada sandali; ngunit ano ba ang magandang ma idudulot nito? Kung patatakbuhin mo ang <code>git diff</code> kadalasan, makikita mo lamang ang isang bagay na katulad nito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git diff diff --git a/chapter1.docx b/chapter1.docx index 88839c4..4afcb7c 100644 Binary files a/chapter1.docx and b/chapter1.docx differ</code></pre> </div> </div> <div class="paragraph"> <p>Hindi mo maaaring direktang ikumpara ang dalawang mga bersyon maliban kung suriin mo ang mga ito at i-scan ang mga ito nang manu-mano, tama? Sa kinalabasan maaari mong gawin ito na medyo mabuti gamit ang mga katangian ng Git. Ilagay ang sumusunod na linya sa iyong <code>.gitattributes</code> na file:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">*.docx diff=word</code></pre> </div> </div> <div class="paragraph"> <p>Sinasabi nito sa Git na ang anumang file na tumutugma sa pattern na ito (<code>.docx</code>) ay dapat gamitin ang “word” na pagsasala kapag sinubukan mong tingnan ang isang diff na naglalaman ng mga pagbabago. Ano ang “word” na pagsasala? Kailangan mong itakda ito. Dito mo i-configure ang Git upang gamitin ang <code>docx2txt</code> na programa para palitan ang mga dokumentong Word upang gawing nababasang mga file na teksto, na kung saan ito ay i-diff ng maayos.</p> </div> <div class="paragraph"> <p>Una, kailangan mong i-install ang <code>docx2txt</code>; maari mo itong i-download sa <a href="http://docx2txt.sourceforge.net" class="bare">http://docx2txt.sourceforge.net</a>. Sundin ang mga tagubilin sa <code>INSTALL</code> na file upang ilagay ito sa isang lugar na kung saan maaring mahanap ng iyong shell. Susunod, magsusulat ka ng script na pambalot upang i-convert ang output sa format na inaasahan ng Git.</p> </div> <div class="paragraph"> <p>Lumikha ng isang file na sa isang lugar sa iyong landas na tinatawag na <code>docx2txt</code>, at idagdag ang mga nilalaman na ito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">#!/bin/bash docx2txt.pl "$1" -</code></pre> </div> </div> <div class="paragraph"> <p>Huwag kalimutan na i-<code>chmod a+x</code> ang file na iyon. Sa katapusan, maaari mong i-kompigura ang Git upang magamit ang script na ito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config diff.word.textconv docx2txt</code></pre> </div> </div> <div class="paragraph"> <p>Alam na ngayon ng Git kung susubukang gumawa ng diff sa pagitan ng dalawang snapshot, at alinman sa mga file na nagtatapos sa <code>.docx</code>, dapat itong patakbuhin ang mga file sa pamamagitan ng “word” na salaan, na tinukoy bilang programa ng <code>docx2txt</code>. Ito ay epektibong gumagawa ng magandang bersyon ng tekstong nakabatay sa iyong Word na mga file bago sinusubukang i-diff sila.</p> </div> <div class="paragraph"> <p>Narito ang isang halimbawa: Kabanata 1 ng aklat na ito ay napalitan sa format ng Word at nakatuon sa isang repositoryong Git. Pagkatapos ay idinagdag ang isang bagong talata. Narito kung ano ang ipinapakita ng <code>git diff</code>:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git diff diff --git a/chapter1.docx b/chapter1.docx index 0b013ca..ba25db5 100644 --- a/chapter1.docx +++ b/chapter1.docx @@ -2,6 +2,7 @@ Ang kabanatang ito ay tungkol sa pagsisimula sa Git. Magsisimula tayo sa simula sa pamamagitan ng pagpapaliwanag ng ilang mga background sa mga kasangkapan ng pagkontrol sa bersyon, pagkatapos ay lilipat sa kung paano makakuha ng Git na tumatakbo sa iyong sistema at sa panghuli kung paano makakuha ng setup na ito upang simulan ang pakikipagtulungan. Sa dulo ng kabanatang ito dapat mong maintindihan kung bakit ang Git ay nandito, bakit dapat mong gamitin ito at dapat mong i-setup ang lahat upang magawa ito. 1.1. Tungkol sa Pagkontrol ng Bersyon Ano ang "pagkontrol sa bersyon", at bakit dapat kang makialam? Ang pagkontrol sa bersyon ay isang sistema na nagtatala sa mga pagbabago sa isang file o hanay ng mga file sa paglipas ng panahon upang maaari mong iurong ang mga tiyak na mga bersyon pagkalipas. +Testing: 1, 2, 3. Kung ikaw ay taga-desinyo ng graphic o ng web at gusto mong itago ang bawat bersyon ng isang imahe o ang pagkakaayos (kung saan ay tiyak na ninanais mo ito), ang Version Control System (VCS) ay isang matalinong bagay na magagamit. Pinapayagan ka nitong ibalik ang mga file pabalik sa nakaraang estado, ibalik ang buong proyekto pabalik sa nakaraan estado, ihambing ang mga pagbabago sa paglipas ng panahon, tingnan kung sino ang huling nagbago sa isang bagay na maaaring magdulot ng problema, sino ang nagpakilala ng isang isyu at kung kailan, at marami pang iba. Ang paggamit ng isang VCS sa pangkalahatan ay nangangahulugan na kung sira mo ang mga bagay o mawawala ang mga file, madali mo itong mabawi. Sa karagdagan, makukuha mo ang lahat ng ito para sa napakaliit na overhead. 1.1.1. Lokal na Version Control Systems Karamihan ng mga tao ay pinipili ang pagkontrol ng bersyon sa pamamagitan ng pagkopya sa mga file patungo sa ibang direktoryo (marahil isang direktoryo na may nakatala na oras, kung sila ay matalino). Ang pamaraan na ito ay karaniwan dahil ito ay sobrang simple, ngunit ito rin ay hindi kapani-paniwalang madaling magkamali. Madaling kalimutan kung aling direktoryo ka at aksidenteng masulatan ang maling file o kopyahin ang maling mga file na hindi mo nais.</code></pre> </div> </div> <div class="paragraph"> <p>Matagumpay at maliwanag ang pagsasabi ng Git sa atin na idinagdag natin ang string na “Testing: 1, 2, 3.”, kung saan ay tama. Ito ay hindi perpekto - ang mga pagbabago sa pagformat ay hindi lumantad dito - ngunit ito ay tiyak na gumagana.</p> </div> <div class="paragraph"> <p>Isa pang kawili-wiling problema na maaari mong malutas sa paraan na ito ay nagsasangkot sa pag-diff ng mga file na imahe. Isang paraan sa paggamit nito ay ang pagpatakbo sa mga file na imahe sa pamamagitan ng pagsasala na nagpapalabas sa kanilang EXIF na impormasyong metadata kung saan ay nakarekord sa mga nakakaraming format ng imahe. Kung iyong i-download at i-install ang <code>exiftool</code> na programa, maaari mo itong gamitin upang palitan ang iyong mga imahe ng teksto tungkol sa metadata, kaya hindi bababa sa diff ang pagpapakita sa iyo ng isang tekstuwal na representasyon ng anumang mga pagbabago na nangyari. Ilagay ang sumusunod na linya sa iyong <code>.gitattributes</code> na file:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">*.png diff=exif</code></pre> </div> </div> <div class="paragraph"> <p>I-kompigura ang Git upang magamit ang kasangkapang ito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config diff.exif.textconv exiftool</code></pre> </div> </div> <div class="paragraph"> <p>Kung iyong papalitan ang isang imahe ng iyong proyekto at patakbuhin ang <code>git diff</code>, makikita mo ang isang bagay na ganito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-diff" data-lang="diff">diff --git a/image.png b/image.png index 88839c4..4afcb7c 100644 --- a/image.png +++ b/image.png @@ -1,12 +1,12 @@ ExifTool Version Number : 7.74 -File Size : 70 kB -File Modification Date/Time : 2009:04:21 07:02:45-07:00 +File Size : 94 kB +File Modification Date/Time : 2009:04:21 07:02:43-07:00 File Type : PNG MIME Type : image/png -Image Width : 1058 -Image Height : 889 +Image Width : 1056 +Image Height : 827 Bit Depth : 8 Color Type : RGB with Alpha</code></pre> </div> </div> <div class="paragraph"> <p>Madali mong makikita na ang laki ng file at ang sukat ng imahe ay kapwa nagbago.</p> </div> </div> </div> <div class="sect3"> <h3 id="_keyword_expansion">Pagpapalawak ng Keyword</h3> <div class="paragraph"> <p> SVN- or CVS- na estilo sa pagpapalawak ng keyword ay madalas na hinihiling ng mga nag-develop na ginagamit sa mga sistema na iyon. Ang pangunahing problema nito sa Git ay hindi mo maaaring baguhin ang isang file na may impormasyon tungkol sa commit pagkatapos mong na-commit, dahil ang Git ay nauna sa pag-checksums sa file.</p> </div> <div class="paragraph"> <p>Gayunpaman, maaari mong i-inject ng teksto sa isang file kung ito ay naka-check out at alisin ito muli bago ito idinagdag sa isang commit. Ang mga katangian ng Git ay nag-aalok sa iyo ng dalawang paraan upang magawa ito.</p> </div> <div class="paragraph"> <p>Una, maaari mong awtomatikong i-inject ang SHA-1 na checksum ng isang blob sa isang <code>$Id$</code> na field sa file. Kung itinakda mo ang katangiang ito sa isang file o hanay ng mga file, pagkatapos sa susunod na i-check out mo ang branch na iyon, papalitan ng Git ang field na iyon kasama ang SHA-1 na blob.</p> </div> <div class="paragraph"> <p>Mahalagang mapansin na hindi ito ang SHA-1 ng commit, kundi ng mismong blob. Ilagay ang sumusunod na linya sa iyong <code>.gitattributes</code> na file:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">*.txt ident</code></pre> </div> </div> <div class="paragraph"> <p>Magdagdag ng isang <code>$Id$</code> na sanggunian sa isang file na pagsusulit:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ echo '$Id$' &gt; test.txt</code></pre> </div> </div> <div class="paragraph"> <p>Sa susunod na i-check out mo ang file na ito, ang Git ay mag-inject ng SHA-1 ng blob:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ rm test.txt $ git checkout -- test.txt $ cat test.txt $Id: 42812b7653c7b88933f8a9d6cad0ca16714b9bb3 $</code></pre> </div> </div> <div class="paragraph"> <p>Gayunpaman, ang resulta ay limitado ang paggamit. Kung ginamit mo ang pagpapalit ng keyword sa CVS o Subversion, maaari mong isama ang isang datestamp - ang SHA-1 ay hindi masyadong kapaki-pakinabang, dahil medyo alisaga ito at hindi mo masabi kung ang isang SHA-1 ay mas matanda o mas bago kaysa sa iba pa sa pamamagitan lamang ng pagtingin sa mga ito.</p> </div> <div class="paragraph"> <p>Iyon pala ay maari kang magsulat ng sarili mong mga pagsala para sa paggawa ng mga pamalit sa mga file sa commit/checkout. Ang mga ito ay tinatawag na “clean” at “smudge” na mga pagsala. Ang sa <code>.gitattributes</code> na file, maaari kang magtakda ng pagsasala para sa mga partikular na landas at pagkatapos ay i-set up ang mga script na magpoproseso ng mga file bago pa man sila i-check out (“smudge”, tingnan <a href="/book/tl/v2/ch00/filters_a">Ang “smudge” ang pagsala ay pinapatakbo sa checkout.</a>) at bago pa man ang mga ito ay i-stage (“clean”, tingnan <a href="/book/tl/v2/ch00/filters_b">Ang “clean” na pagsasala ay pinapatakbo kung ang mga file ay naka-stage.</a>). Ang mga pagsala na ito ay maaaring itakda upang gawin ang lahat ng uri ng mga bagay na masaya.</p> </div> <div id="filters_a" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/smudge.png" alt="Ang ``smudge'' na pagsasala ay pinapatakbo sa checkout."> </div> <div class="title">Figure 144. Ang “smudge” ang pagsala ay pinapatakbo sa checkout.</div> </div> <div id="filters_b" class="imageblock"> <div class="content"> <img src="/book/tl/v2/images/clean.png" alt="Ang ``clean'' na pagsasala ay pinapatakbo kung ang mga file ay naka-stage."> </div> <div class="title">Figure 145. Ang “clean” na pagsasala ay pinapatakbo kung ang mga file ay naka-stage.</div> </div> <div class="paragraph"> <p>Ang orihinal na mensahe ng commit para sa katangian na ito ay nagbibigay ng isang simpleng halimbawa ng pagpapatakbo ng lahat ng iyong source code sa C sa pamamagitan ng <code>indent</code> na programa bago i-commit. Maaari mo itong i-set up sa pamamagitan ng pagtatakda ng pagsasala na katangian sa iyong <code>.gitattributes</code> na file hanggang sa <code>*.c</code> na mga file kasama na ang “indent” na pagsala:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">*.c filter=indent</code></pre> </div> </div> <div class="paragraph"> <p>Pagkatapos, sabihin sa Git kung ano ang ginagawa ng pagsasala na “indent” sa smudge at clean:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global filter.indent.clean indent $ git config --global filter.indent.smudge cat</code></pre> </div> </div> <div class="paragraph"> <p>Sa kasong ito, kapag nag-commit ka ng mga file na tumutugma sa <code>*.c</code>, ang Git ay tatakbo sa mga ito sa pamamagitan ng indent na programa bago ito i-stage nila at pagkatapos patakbuhin ang mga ito sa programa ng <code>cat</code> bago suriin ang mga ito pabalik sa disk. Ang <code>cat</code> na programa ay talagang walang magawa: iniluwa palabas nito ang parehong data na pinasok dito. Ang kumbinasyon na ito ay epektibong sinasala ang lahat ng mga file ng source code sa C <code>indent</code> bago ito i-commit.</p> </div> <div class="paragraph"> <p>Ang isa pang kawili-wiling halimbawa ay nakakuha ng pagpapalawak ng keyword na <code>$Date$</code>, estilo ng RCS. Upang gawin ito ng maayos, kailangan mo ng script na tumatagal sa filename, alamin ang huling petsa ng pag-commit para sa proyektong ito, at isingit ang petsa sa file. Narito ang Ruby script na ginagawa niyan:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ruby" data-lang="ruby">#! /usr/bin/env ruby data = STDIN.read last_date = `git log --pretty=format:"%ad" -1` puts data.gsub('$Date$', '$Date: ' + last_date.to_s + '$')</code></pre> </div> </div> <div class="paragraph"> <p>Ang lahat ng script ay makakakuha ng pinakabagong petsa ng pag-commit mula sa <code>git log</code> na utos, idikit sa anumang <code>$Date$</code> na mga string na nakikita sa stdin, at i-print ang mga resulta - ito ay dapat madaling gawin sa anumang language na ikaw ay pinaka-komportable. Maaari mong pangalanan ang file na ito <code>expand_date</code> at ilagay ito sa iyong path. Sa ngayon, kailangan mong mag-set up ng isang filter sa Git (tawagin mo <code>dater</code>) at sabihin ito upang gamitin ang iyong <code>expand_date</code> na filter sa smudge ng mga file sa checkout. Gagamitin mo ang Perl expression upang linisin ito sa commit:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config filter.dater.smudge expand_date $ git config filter.dater.clean 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"'</code></pre> </div> </div> <div class="paragraph"> <p>Ang Perl snippet ay nagtatanggal ng anumang nakikita nito sa <code>$Date$</code> string, upang makabalik kung saan ka nagsimula. Ngayon na handa na ang iyong filter, maaari mong subukan ito sa pamamagitan ng pagse-set up ng isang katangian ng Git para sa file na nakikipag-ugnayan sa bagong filter at paglikha ng isang file sa iyong <code>$Date$</code> na keyword</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">date*.txt filter=dater</code></pre> </div> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ echo '# $Date$' &gt; date_test.txt</code></pre> </div> </div> <div class="paragraph"> <p>Kung nag-commit ka ng mga pagbabago at tingnan mo muli ang file, nakikita mo ang keyword na maayos na pinalitan:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git add date_test.txt .gitattributes $ git commit -m "Testing date expansion in Git" $ rm date_test.txt $ git checkout date_test.txt $ cat date_test.txt # $Date: Tue Apr 21 07:26:52 2009 -0700$</code></pre> </div> </div> <div class="paragraph"> <p>Makikita mo kung gaano kabisa ang pamamaraan na ito para sa mga na-customize na aplikasyon. Dapat kang mag-ingat, bagaman, dahil sa <code>.gitattributes</code> file ay nag-commit at naipasa sa proyekto, pero ang driver (sa kasong ito, <code>dater</code>) ay hindi, kaya hindi ito gagana saan man. Kapag dinisenyo mo ang mga filter na ito, dapat silang mabigo ng buong-husay at ayusin pa rin ang proyekto.</p> </div> </div> <div class="sect3"> <h3 id="_pag_e_export_ng_iyong_repository">Pag-e-export ng Iyong Repository</h3> <div class="paragraph"> <p> Ang Git ng katangian ng data ay hinahayaan ka na gawin ang ilang mga kagiliw-giliw na bagay kapag nag-export ng isang archive ng iyong proyekto.</p> </div> <div class="sect4"> <h4 id="_export_ignore"><code>export-ignore</code></h4> <div class="paragraph"> <p>Maaari mong sabihin sa Git na huwag i-export ang ilang mga file o mga direktoryo kapag bumubuo ng isang archive. Kung mayroong isang subdirectory o file na hindi mo gustong isama sa iyong file ng archive ngunit nais mong i-tsek sa iyong proyekto, maaari mong matukoy ang mga file na iyon sa pamamagitan ng katangian ng <code>export-ignore</code>.</p> </div> <div class="paragraph"> <p>Halimbawa, sabihin nating mayroon kang ilang mga test file sa <code>test/</code> subdirectory, at hindi ito makatwiran upang isama ang mga ito sa pag-export ng tarball ng iyong proyekto. Maaari mong idagdag ang sumusunod na linya sa iyong mga file na katangian ng Git:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">test/ export-ignore</code></pre> </div> </div> <div class="paragraph"> <p>Sa ngayon, kapag nagpatakbo ka ng <code>git archive</code> upang lumikha ng isang tarball ng iyong proyekto, ang direktoryo na iyon ay hindi isasama sa archive.</p> </div> </div> <div class="sect4"> <h4 id="_export_subst"><code>export-subst</code></h4> <div class="paragraph"> <p>Kapag nag-export ng mga file para sa pag-deploy maaari mong gamitin ang it <code>git log</code> sa pag-format at pagpapalawak ng keyword-expansion ng mga napiling bahagi ng mga file na minarkahan ng katangian ng <code>export-subst</code>.</p> </div> <div class="paragraph"> <p>Halimbawa, kung gusto mong isama ang isang file na pinangalanang <code>LAST_COMMIT</code> sa iyong proyekto, at may metadata tungkol sa huling nag-commit awtomatikong na-inject ito kapag ang <code>git archive</code> ay tumatakbo, kaya mo tulad ng halimbawang i-set up ang iyong mga <code>.gitattributes</code> at <code>LAST_COMMIT</code> na mga file tulad nito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">LAST_COMMIT export-subst</code></pre> </div> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ echo 'Last commit date: $Format:%cd by %aN$' &gt; LAST_COMMIT $ git add LAST_COMMIT .gitattributes $ git commit -am 'adding LAST_COMMIT file for archives'</code></pre> </div> </div> <div class="paragraph"> <p>Kapag nagpatakbo ka ng <code>git archive</code>, ang mga nilalaman ng naka-archive na file ay magiging ganito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git archive HEAD | tar xCf ../deployment-testing - $ cat ../deployment-testing/LAST_COMMIT Last commit date: Tue Apr 21 08:38:48 2009 -0700 by Scott Chacon</code></pre> </div> </div> <div class="paragraph"> <p>Maaaring isama sa mga pamalit na halimbawa ang na i-commit na mensahe at anumang <code>git notes</code>, at <code>git log</code> ay maaaring gumawa ng simpleng word wrapping:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ echo '$Format:Last commit: %h by %aN at %cd%n%+w(76,6,9)%B$' &gt; LAST_COMMIT $ git commit -am 'export-subst uses git log'\''s custom formatter git archive uses git log'\''s `pretty=format:` processor directly, and strips the surrounding `$Format:` and `$` markup from the output. ' $ git archive @ | tar xfO - LAST_COMMIT Last commit: 312ccc8 by Jim Hill at Fri May 8 09:14:04 2015 -0700 export-subst uses git log's custom formatter git archive uses git log's `pretty=format:` processor directly, and strips the surrounding `$Format:` and `$` markup from the output.</code></pre> </div> </div> <div class="paragraph"> <p>Ang resultang archive ay angkop para sa pag-deploy ng trabaho, ngunit tulad ng anumang na-export na archive na ito ay hindi angkop para sa karagdagang pag-unlad ng trabaho.</p> </div> </div> </div> <div class="sect3"> <h3 id="_pagsamahin_ang_mga_istratehiya">Pagsamahin ang mga Istratehiya</h3> <div class="paragraph"> <p> Maaari mo ring gamitin ang mga katangian ng Git upang sabihin sa Git na gumamit ng iba’t ibang mga istratehiya sa pagsasama para sa mga partikular na file sa iyong proyekto. Ang isa sa kapaki-pakinabang na pagpipilian ay ang sabihin sa Git na huwag subukan na pagsamahin ang mga tiyak na file kapag mayroon silang mga salungatan, ngunit sa halip na gamitin ang iyong bahagi ng pagsasama sa ibang tao.</p> </div> <div class="paragraph"> <p>Ito ay kapaki-pakinabang kung ang isang branch sa iyong proyekto ay diverged o dalubhasa, ngunit nais mong ma-merge ang mga pagbabago sa likod mula dito, at nais mong huwag pansinin ang ilang mga file. Sabihing mayroon kang database settings file na tinatawag na <code>database.xml</code> na iba sa dalawang mga branch, at nais mong pagsamahin Maaari kang mag-set up ng isang katangian tulad nito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-ini" data-lang="ini">database.xml merge=ours</code></pre> </div> </div> <div class="paragraph"> <p>At pagkatapos ay tukuyin ang isang istratehiya ng dummy <code>ours</code> na may:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git config --global merge.ours.driver true</code></pre> </div> </div> <div class="paragraph"> <p>Kung pinagsama mo ang ibang branch, sa halip na pagsamahin ang mga salungatan sa <code>database.xml</code> file, nakakita ka ng ganito:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git merge topic Auto-merging database.xml Merge made by recursive.</code></pre> </div> </div> <div class="paragraph"> <p>Sa kasong ito, ang <code>database.xml</code> mananatili sa anumang bersyon sa dati.</p> </div> </div> <div id="nav"><a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Kompigurasyon-ng-Git">prev</a> | <a href="/book/tl/v2/Pag-aangkop-sa-Sariling-Pangangailagan-ng-Git-Mga-Hook-ng-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