CINXE.COM

Git - Chytrý HTTP

<!DOCTYPE html> <html lang="cs"> <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 - Chytrý HTTP</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-on-the-Server-Smart-HTTP">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Smart-HTTP">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/GitHub-%d0%9e%d0%b1%d0%be%d0%b1%d1%89%d0%b5%d0%bd%d0%b8%d0%b5">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-auf-dem-Server-Smart-HTTP">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Git-en-el-Servidor-HTTP-Inteligente">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Git-sur-le-serveur-HTTP-intelligent">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/Git%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc-Smart-HTTP">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ec%8a%a4%eb%a7%88%ed%8a%b8-HTTP">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-op-de-server-Slimme-HTTP">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b5-%d0%a3%d0%bc%d0%bd%d1%8b%d0%b9-HTTP">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Git-na-stre%c5%beniku-Pametni-HTTP">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Git-sa-Server-Smart-HTTP">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d1%96-%d0%a0%d0%be%d0%b7%d1%83%d0%bc%d0%bd%d0%b8%d0%b9-HTTP">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a%e7%9a%84-Git-Smart-HTTP">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Git-na-serveru-Chytr%c3%bd-HTTP">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/Git-%d0%bd%d0%b0-%d0%a1%d0%b5%d1%80%d0%b2%d0%b5%d1%80-Smart-HTTP">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Git-na-serwerze-Smart-HTTP">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%93%d0%b8%d1%82-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d1%83-%d0%9f%d0%b0%d0%bc%d0%b5%d1%82%d0%b0%d0%bd-HTTP">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b4%d0%b0-Smart-HTTP">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/%e4%bc%ba%e6%9c%8d%e5%99%a8%e4%b8%8a%e7%9a%84-Git-Smart-HTTP">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-on-the-Server-Smart-HTTP">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/%da%af%db%8c%d8%aa-%d8%b1%d9%88%db%8c-%d8%b3%d8%b1%d9%88%d8%b1-HTTP-%d9%87%d9%88%d8%b4%d9%85%d9%86%d8%af" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-di-Server-Smart-HTTP">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-on-the-Server-Smart-HTTP">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-on-the-Server-Smart-HTTP">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Git-no-servidor-Smart-HTTP">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Git-no-Servidor-Smart-HTTP">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-p%c3%a5-servern-Smart-HTTP">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Ak%c4%b1ll%c4%b1-HTTP">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit-cs/progit2-cs">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/cs/v2/%c3%9avod-Spr%c3%a1va-verz%c3%ad">Úvod</a></h2> <ol> <li> 1.1 <a href="/book/cs/v2/%c3%9avod-Spr%c3%a1va-verz%c3%ad">Správa verzí</a> </li> <li> 1.2 <a href="/book/cs/v2/%c3%9avod-Stru%c4%8dn%c3%a1-historie-syst%c3%a9mu-Git">Stručná historie systému Git</a> </li> <li> 1.3 <a href="/book/cs/v2/%c3%9avod-Z%c3%a1klady-syst%c3%a9mu-Git">Základy systému Git</a> </li> <li> 1.4 <a href="/book/cs/v2/%c3%9avod-P%c5%99%c3%adkazov%c3%bd-%c5%99%c3%a1dek">Příkazový řádek</a> </li> <li> 1.5 <a href="/book/cs/v2/%c3%9avod-Instalace-syst%c3%a9mu-Git">Instalace systému Git</a> </li> <li> 1.6 <a href="/book/cs/v2/%c3%9avod-Prvn%c3%ad-nastaven%c3%ad-syst%c3%a9mu-Git">První nastavení systému Git</a> </li> <li> 1.7 <a href="/book/cs/v2/%c3%9avod-Z%c3%adsk%c3%a1n%c3%ad-n%c3%a1pov%c4%9bdy">Získání nápovědy</a> </li> <li> 1.8 <a href="/book/cs/v2/%c3%9avod-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Z%c3%adsk%c3%a1n%c3%ad-repozit%c3%a1%c5%99e-Git">Základy práce se systémem Git</a></h2> <ol> <li> 2.1 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Z%c3%adsk%c3%a1n%c3%ad-repozit%c3%a1%c5%99e-Git">Získání repozitáře Git</a> </li> <li> 2.2 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Nahr%c3%a1v%c3%a1n%c3%ad-zm%c4%9bn-do-repozit%c3%a1%c5%99e">Nahrávání změn do repozitáře</a> </li> <li> 2.3 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Zobrazen%c3%ad-historie-reviz%c3%ad">Zobrazení historie revizí</a> </li> <li> 2.4 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-N%c3%a1vrat-do-p%c5%99edchoz%c3%adho-stavu">Návrat do předchozího stavu</a> </li> <li> 2.5 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Pr%c3%a1ce-se-vzd%c3%a1len%c3%bdmi-repozit%c3%a1%c5%99i">Práce se vzdálenými repozitáři</a> </li> <li> 2.6 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Pou%c5%be%c3%adv%c3%a1n%c3%ad-zna%c4%8dek">Používání značek</a> </li> <li> 2.7 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Aliasy-v-Gitu">Aliasy v Gitu</a> </li> <li> 2.8 <a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-V%c4%9btve-v-kostce">Větve v systému Git</a></h2> <ol> <li> 3.1 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-V%c4%9btve-v-kostce">Větve v kostce</a> </li> <li> 3.2 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-Z%c3%a1klady-v%c4%9btven%c3%ad-a-slu%c4%8dov%c3%a1n%c3%ad">Základy větvení a slučování</a> </li> <li> 3.3 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-Spr%c3%a1va-v%c4%9btv%c3%ad">Správa větví</a> </li> <li> 3.4 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-Postupy-p%c5%99i-pr%c3%a1ci-s-v%c4%9btvemi">Postupy při práci s větvemi</a> </li> <li> 3.5 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-Vzd%c3%a1len%c3%a9-v%c4%9btve">Vzdálené větve</a> </li> <li> 3.6 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-P%c5%99eskl%c3%a1d%c3%a1n%c3%ad">Přeskládání</a> </li> <li> 3.7 <a href="/book/cs/v2/V%c4%9btve-v-syst%c3%a9mu-Git-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/cs/v2/Git-na-serveru-Protokoly">Git na serveru</a></h2> <ol> <li> 4.1 <a href="/book/cs/v2/Git-na-serveru-Protokoly">Protokoly</a> </li> <li> 4.2 <a href="/book/cs/v2/Git-na-serveru-Zprovozn%c4%9bn%c3%ad-Gitu-na-serveru">Zprovoznění Gitu na serveru</a> </li> <li> 4.3 <a href="/book/cs/v2/Git-na-serveru-Generov%c3%a1n%c3%ad-ve%c5%99ejn%c3%a9ho-kl%c3%ad%c4%8de-SSH">Generování veřejného klíče SSH</a> </li> <li> 4.4 <a href="/book/cs/v2/Git-na-serveru-Nastaven%c3%ad-serveru">Nastavení serveru</a> </li> <li> 4.5 <a href="/book/cs/v2/Git-na-serveru-D%c3%a9mon-Git">Démon Git</a> </li> <li> 4.6 <a href="/book/cs/v2/Git-na-serveru-Chytr%c3%bd-HTTP" class="active">Chytrý HTTP</a> </li> <li> 4.7 <a href="/book/cs/v2/Git-na-serveru-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/cs/v2/Git-na-serveru-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/cs/v2/Git-na-serveru-Mo%c5%benosti-hostov%c3%a1n%c3%ad-u-t%c5%99et%c3%ad-strany">Možnosti hostování u třetí strany</a> </li> <li> 4.10 <a href="/book/cs/v2/Git-na-serveru-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/cs/v2/Distribuovan%c3%bd-Git-Distribuovan%c3%a9-pracovn%c3%ad-postupy">Distribuovaný Git</a></h2> <ol> <li> 5.1 <a href="/book/cs/v2/Distribuovan%c3%bd-Git-Distribuovan%c3%a9-pracovn%c3%ad-postupy">Distribuované pracovní postupy</a> </li> <li> 5.2 <a href="/book/cs/v2/Distribuovan%c3%bd-Git-P%c5%99isp%c3%adv%c3%a1n%c3%ad-do-projektu">Přispívání do projektu</a> </li> <li> 5.3 <a href="/book/cs/v2/Distribuovan%c3%bd-Git-Spr%c3%a1va-projektu">Správa projektu</a> </li> <li> 5.4 <a href="/book/cs/v2/Distribuovan%c3%bd-Git-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/cs/v2/GitHub-Z%c5%99%c3%adzen%c3%ad-%c3%ba%c4%8dtu-a-%c3%baprava-konfigurace">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/cs/v2/GitHub-Z%c5%99%c3%adzen%c3%ad-%c3%ba%c4%8dtu-a-%c3%baprava-konfigurace">Zřízení účtu a úprava konfigurace</a> </li> <li> 6.2 <a href="/book/cs/v2/GitHub-P%c5%99isp%c3%adv%c3%a1n%c3%ad-do-projektu">Přispívání do projektu</a> </li> <li> 6.3 <a href="/book/cs/v2/GitHub-Maintaining-a-Project">Maintaining a Project</a> </li> <li> 6.4 <a href="/book/cs/v2/GitHub-Managing-an-organization">Managing an organization</a> </li> <li> 6.5 <a href="/book/cs/v2/GitHub-Scripting-GitHub">Scripting GitHub</a> </li> <li> 6.6 <a href="/book/cs/v2/GitHub-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/cs/v2/Git-Tools-Revision-Selection">Git Tools</a></h2> <ol> <li> 7.1 <a href="/book/cs/v2/Git-Tools-Revision-Selection">Revision Selection</a> </li> <li> 7.2 <a href="/book/cs/v2/Git-Tools-Interactive-Staging">Interactive Staging</a> </li> <li> 7.3 <a href="/book/cs/v2/Git-Tools-Stashing-and-Cleaning">Stashing and Cleaning</a> </li> <li> 7.4 <a href="/book/cs/v2/Git-Tools-Signing-Your-Work">Signing Your Work</a> </li> <li> 7.5 <a href="/book/cs/v2/Git-Tools-Searching">Searching</a> </li> <li> 7.6 <a href="/book/cs/v2/Git-Tools-Rewriting-History">Rewriting History</a> </li> <li> 7.7 <a href="/book/cs/v2/Git-Tools-Reset-Demystified">Reset Demystified</a> </li> <li> 7.8 <a href="/book/cs/v2/Git-Tools-Advanced-Merging">Advanced Merging</a> </li> <li> 7.9 <a href="/book/cs/v2/Git-Tools-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/cs/v2/Git-Tools-Lad%c4%9bn%c3%ad-v-syst%c3%a9mu-Git">Ladění v systému Git</a> </li> <li> 7.11 <a href="/book/cs/v2/Git-Tools-Submodules">Submodules</a> </li> <li> 7.12 <a href="/book/cs/v2/Git-Tools-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/cs/v2/Git-Tools-Replace">Replace</a> </li> <li> 7.14 <a href="/book/cs/v2/Git-Tools-Credential-Storage">Credential Storage</a> </li> <li> 7.15 <a href="/book/cs/v2/Git-Tools-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/cs/v2/Customizing-Git-Git-Configuration">Customizing Git</a></h2> <ol> <li> 8.1 <a href="/book/cs/v2/Customizing-Git-Git-Configuration">Git Configuration</a> </li> <li> 8.2 <a href="/book/cs/v2/Customizing-Git-Atributy-Git">Atributy Git</a> </li> <li> 8.3 <a href="/book/cs/v2/Customizing-Git-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/cs/v2/Customizing-Git-An-Example-Git-Enforced-Policy">An Example Git-Enforced Policy</a> </li> <li> 8.5 <a href="/book/cs/v2/Customizing-Git-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/cs/v2/Git-a-ostatn%c3%ad-syst%c3%a9my-Git-as-a-Client">Git a ostatní systémy</a></h2> <ol> <li> 9.1 <a href="/book/cs/v2/Git-a-ostatn%c3%ad-syst%c3%a9my-Git-as-a-Client">Git as a Client</a> </li> <li> 9.2 <a href="/book/cs/v2/Git-a-ostatn%c3%ad-syst%c3%a9my-Migrating-to-Git">Migrating to Git</a> </li> <li> 9.3 <a href="/book/cs/v2/Git-a-ostatn%c3%ad-syst%c3%a9my-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/cs/v2/Git-Internals-Plumbing-and-Porcelain">Git Internals</a></h2> <ol> <li> 10.1 <a href="/book/cs/v2/Git-Internals-Plumbing-and-Porcelain">Plumbing and Porcelain</a> </li> <li> 10.2 <a href="/book/cs/v2/Git-Internals-Git-Objects">Git Objects</a> </li> <li> 10.3 <a href="/book/cs/v2/Git-Internals-Git-References">Git References</a> </li> <li> 10.4 <a href="/book/cs/v2/Git-Internals-Bal%c3%ad%c4%8dkov%c3%a9-soubory">Balíčkové soubory</a> </li> <li> 10.5 <a href="/book/cs/v2/Git-Internals-The-Refspec">The Refspec</a> </li> <li> 10.6 <a href="/book/cs/v2/Git-Internals-P%c5%99enosov%c3%a9-protokoly">Přenosové protokoly</a> </li> <li> 10.7 <a href="/book/cs/v2/Git-Internals-Spr%c3%a1va-a-obnova-dat">Správa a obnova dat</a> </li> <li> 10.8 <a href="/book/cs/v2/Git-Internals-Environment-Variables">Environment Variables</a> </li> <li> 10.9 <a href="/book/cs/v2/Git-Internals-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces">Appendix A: Git in Other Environments</a></h2> <ol> <li> A1.1 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces">Graphical Interfaces</a> </li> <li> A1.2 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Eclipse">Git in Eclipse</a> </li> <li> A1.4 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash">Git in Bash</a> </li> <li> A1.5 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.6 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Powershell">Git in Powershell</a> </li> <li> A1.7 <a href="/book/cs/v2/Appendix-A:-Git-in-Other-Environments-Shrnut%c3%ad">Shrnutí</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/cs/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Appendix B: Embedding Git in your Applications</a></h2> <ol> <li> A2.1 <a href="/book/cs/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git">Command-line Git</a> </li> <li> A2.2 <a href="/book/cs/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/cs/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit">JGit</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/cs/v2/Appendix-C:-Git-Commands-Setup-and-Config">Appendix C: Git Commands</a></h2> <ol> <li> A3.1 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Setup-and-Config">Setup and Config</a> </li> <li> A3.2 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects">Getting and Creating Projects</a> </li> <li> A3.3 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Basic-Snapshotting">Basic Snapshotting</a> </li> <li> A3.4 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Branching-and-Merging">Branching and Merging</a> </li> <li> A3.5 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects">Sharing and Updating Projects</a> </li> <li> A3.6 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison">Inspection and Comparison</a> </li> <li> A3.7 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Patching">Patching</a> </li> <li> A3.9 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Email">Email</a> </li> <li> A3.10 <a href="/book/cs/v2/Appendix-C:-Git-Commands-External-Systems">External Systems</a> </li> <li> A3.11 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Administration">Administration</a> </li> <li> A3.12 <a href="/book/cs/v2/Appendix-C:-Git-Commands-Plumbing-Commands">Plumbing Commands</a> </li> </ol> </li> </ol> </div> </div> </div> <span class="light" id="edition"> 2nd Edition </span> </div> <div id="main" data-pagefind-filter="category:book" data-pagefind-meta="category:Book" data-pagefind-weight="0.05" data-pagefind-body class="book edition2"> <h1>4.6 Git na serveru - Chytrý HTTP</h1> <div> <h2 id="_chytrý_http_2">Chytrý HTTP</h2> <div class="paragraph"> <p> K dispozici už máme autentizovaný přístup přes SSH a neautentizovaný přístup přes <code>git://</code>. Ale existuje i protokol, který umí obojí najednou. Zřízení chytrého HTTP v podstatě spočívá jen v povolení CGI skriptu, který se dodává s Gitem a na serveru se nachází pod jménem <code>git-http-backend</code>. Tento CGI skript čte cestu a hlavičky zaslané pro dané HTTP URL příkazy <code>git fetch</code> nebo <code>git push</code> a zjistí, zda může klient komunikovat přes HTTP (což platí pro každého klienta od verze 1.6.6). Pokud CGI skript zjistí, že se jedná o chytrého klienta, bude s ním komunikovat chytrým způsobem. V opačném případě se uchýlí k hloupému chování (takže je vůči starším klientům zpětně kompatibilní pro čtení).</p> </div> <div class="paragraph"> <p>Projděme si nejzákladnější nastavení. Jako CGI server použijeme Apache. Pokud nemáte zprovozněn Apache, můžete jej na linuxovém počítači nainstalovat třeba takto:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ sudo apt-get install apache2 apache2-utils $ a2enmod cgi alias env rewrite</code></pre> </div> </div> <div class="paragraph"> <p>Povolí se tím také moduly <code>mod_cgi</code>, <code>mod_alias</code>, <code>mod_env</code> a <code>mod_rewrite</code>, které jsou pro správnou činnost nutné.</p> </div> <div class="paragraph"> <p>Pro adresář <code>/opt/git</code> také budete muset nastavit unixovou uživatelskou skupinu na <code>www-data</code>, aby váš webový server získal přístup do repozitářů pro čtení i pro zápis. Instance Apache, která CGI skript spouští, totiž (standardně) běží pod tímto uživatelem:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ chgrp -R www-data /opt/git</code></pre> </div> </div> <div class="paragraph"> <p>Dále potřebujeme do konfigurace Apache přidat další věci, aby se skript <code>git-http-backend</code> spouštěl pro obsluhu všeho, co na vašem webovém serveru prochází cestou <code>/git</code>.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">SetEnv GIT_PROJECT_ROOT /opt/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/lib/git-core/git-http-backend/</code></pre> </div> </div> <div class="paragraph"> <p>Pokud vynecháte proměnnou prostředí <code>GIT_HTTP_EXPORT_ALL</code>, pak bude Git obsluhovat neautentizované klienty jen pro ty repozitáře, které v sobě mají soubor <code>git-daemon-export-ok</code> — právě tak, jak to dělá gitový démon.</p> </div> <div class="paragraph"> <p>Nakonec budete muset serveru Apache říct, aby povolil požadavky na skript <code>git-http-backend</code> a aby nějak zajistil autentizaci při zápisu — například podobným Auth blokem:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">RewriteEngine On RewriteCond %{QUERY_STRING} service=git-receive-pack [OR] RewriteCond %{REQUEST_URI} /git-receive-pack$ RewriteRule ^/git/ - [E=AUTHREQUIRED] &lt;Files "git-http-backend"&gt; AuthType Basic AuthName "Git Access" AuthUserFile /opt/git/.htpasswd Require valid-user Order deny,allow Deny from env=AUTHREQUIRED Satisfy any &lt;/Files&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Pro tento účel budete muset vytvořit soubor <code>.htpasswd</code>, který bude obsahovat hesla všech oprávněných uživatelů. Následující příklad do souboru přidává uživatele „schacon“:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ htpasswd -c /opt/git/.htpasswd schacon</code></pre> </div> </div> <div class="paragraph"> <p>Existují spousty způsobů, jak může Apache autentizovat uživatele. Jeden z nich si budete muset vybrat a použít. Tohle je jen nejjednodušší příklad, který se dá použít. Téměř jistě budete chtít zprovoznit komunikaci přes SSL, aby byla všechna data šifrovaná.</p> </div> <div class="paragraph"> <p>Nechceme zacházet do přílišných detailů konfigurace Apache, protože možná používáte jiný server, nebo máte jiné požadavky na autentizaci. Základní myšlenka je taková, že se Git dodává s CGI skriptem <code>git-http-backend</code>, který při aktivaci zajistí veškeré dohadování při odesílání a přijímání dat přes HTTP. Sám o sobě neprovádí žádnou autentizaci, ale to lze snadno zvládnout na úrovni webového serveru, který ho spouští. Lze toho dosáhnout s téměř každým webovým serverem, který podporuje CGI, takže použijte ten, který znáte nejlépe.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Note</div> </td> <td class="content"> <div class="paragraph"> <p>Další informace o konfiguraci autentizace pro Apache naleznete v jeho dokumentaci na stránce <a href="http://httpd.apache.org/docs/current/howto/auth.html" class="bare">http://httpd.apache.org/docs/current/howto/auth.html</a></p> </div> </td> </tr> </table> </div> <div id="nav"><a href="/book/cs/v2/Git-na-serveru-Démon-Git">prev</a> | <a href="/book/cs/v2/Git-na-serveru-GitWeb">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