CINXE.COM
Git - Протоколи
<!DOCTYPE html> <html lang="uk"> <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 - Протоколи</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-The-Protocols">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Protokollar">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/GitHub-%d0%a1%d1%8a%d0%b7%d0%b4%d0%b0%d0%b2%d0%b0%d0%bd%d0%b5-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bd%d0%b0-%d0%b0%d0%ba%d0%b0%d1%83%d0%bd%d1%82">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-auf-dem-Server-Die-Protokolle">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Git-en-el-Servidor-Los-Protocolos">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Git-sur-le-serveur-Protocoles">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-%e3%83%97%e3%83%ad%e3%83%88%e3%82%b3%e3%83%ab">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ed%94%84%eb%a1%9c%ed%86%a0%ec%bd%9c">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-op-de-server-De-protocollen">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%9f%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d1%8b">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Git-na-stre%c5%beniku-Protokoli">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Git-sa-Server-Ang-Mga-Protokol">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%9f%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d0%b8">Українська</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-%e5%8d%8f%e8%ae%ae">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Git-na-serveru-Protokoly">Č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-%d0%9f%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d0%b8%d1%82%d0%b5">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Git-na-serwerze-Protoko%c5%82y">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%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d0%b8">Српски</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-The-Protocols">Ўзбекча</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-%e9%80%9a%e8%a8%8a%e5%8d%94%e5%ae%9a">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-on-the-Server-The-Protocols">Беларуская</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-%d9%be%d8%b1%d9%88%d8%aa%da%a9%d9%84%e2%80%8c%d9%87%d8%a7" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-di-Server-Protokol">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-on-the-Server-The-Protocols">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-on-the-Server-The-Protocols">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Git-no-servidor-Os-Protocolos">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Git-no-Servidor-The-Protocols">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-p%c3%a5-servern-Protokollen">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-%c4%b0leti%c5%9fim-Kurallar%c4%b1-Protocols">Türkçe</a>.</td></tr> </table> </p> <hr class="sidebar"/> <p> The source of this book is <a href="https://github.com/progit/progit2-uk">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/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9f%d1%80%d0%be-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83-%d0%ba%d0%be%d0%bd%d1%82%d1%80%d0%be%d0%bb%d1%8e-%d0%b2%d0%b5%d1%80%d1%81%d1%96%d0%b9">Вступ</a></h2> <ol> <li> 1.1 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9f%d1%80%d0%be-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83-%d0%ba%d0%be%d0%bd%d1%82%d1%80%d0%be%d0%bb%d1%8e-%d0%b2%d0%b5%d1%80%d1%81%d1%96%d0%b9">Про систему контролю версій</a> </li> <li> 1.2 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9a%d0%be%d1%80%d0%be%d1%82%d0%ba%d0%b0-%d1%96%d1%81%d1%82%d0%be%d1%80%d1%96%d1%8f-Git">Коротка історія Git</a> </li> <li> 1.3 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git">Основи Git</a> </li> <li> 1.4 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-Git,-%d0%b7%d0%b0%d0%b7%d0%b2%d0%b8%d1%87%d0%b0%d0%b9,-%d1%82%d1%96%d0%bb%d1%8c%d0%ba%d0%b8-%d0%b4%d0%be%d0%b4%d0%b0%d1%94-%d0%b4%d0%b0%d0%bd%d1%96">Git, зазвичай, тільки додає дані</a> </li> <li> 1.5 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%a2%d1%80%d0%b8-%d1%81%d1%82%d0%b0%d0%bd%d0%b8">Три стани</a> </li> <li> 1.6 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%bd%d0%b8%d0%b9-%d1%80%d1%8f%d0%b4%d0%be%d0%ba">Командний рядок</a> </li> <li> 1.7 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%86%d0%bd%d1%81%d1%82%d0%b0%d0%bb%d1%8f%d1%86%d1%96%d1%8f-Git">Інсталяція Git</a> </li> <li> 1.8 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9f%d0%be%d1%87%d0%b0%d1%82%d0%ba%d0%be%d0%b2%d0%b5-%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git">Початкове налаштування Git</a> </li> <li> 1.9 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9e%d1%82%d1%80%d0%b8%d0%bc%d0%b0%d0%bd%d0%bd%d1%8f-%d0%b4%d0%be%d0%bf%d0%be%d0%bc%d0%be%d0%b3%d0%b8">Отримання допомоги</a> </li> <li> 1.10 <a href="/book/uk/v2/%d0%92%d1%81%d1%82%d1%83%d0%bf-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%a1%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-Git-%d1%81%d1%85%d0%be%d0%b2%d0%b8%d1%89%d0%b0">Основи Git</a></h2> <ol> <li> 2.1 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%a1%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-Git-%d1%81%d1%85%d0%be%d0%b2%d0%b8%d1%89%d0%b0">Створення Git-сховища</a> </li> <li> 2.2 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%97%d0%b0%d0%bf%d0%b8%d1%81-%d0%b7%d0%bc%d1%96%d0%bd-%d0%b4%d0%be-%d1%80%d0%b5%d0%bf%d0%be%d0%b7%d0%b8%d1%82%d0%be%d1%80%d1%96%d1%8f">Запис змін до репозиторія</a> </li> <li> 2.3 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%9f%d0%b5%d1%80%d0%b5%d0%b3%d0%bb%d1%8f%d0%b4-%d1%96%d1%81%d1%82%d0%be%d1%80%d1%96%d1%97-%d0%ba%d0%be%d0%bc%d1%96%d1%82%d1%96%d0%b2">Перегляд історії комітів</a> </li> <li> 2.4 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%a1%d0%ba%d0%b0%d1%81%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%80%d0%b5%d1%87%d0%b5%d0%b9">Скасування речей</a> </li> <li> 2.5 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%92%d0%b7%d0%b0%d1%94%d0%bc%d0%be%d0%b4%d1%96%d1%8f-%d0%b7-%d0%b2%d1%96%d0%b4%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%bc%d0%b8-%d1%81%d1%85%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d0%bc%d0%b8">Взаємодія з віддаленими сховищами</a> </li> <li> 2.6 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%a2%d0%b5%d2%91%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Теґування</a> </li> <li> 2.7 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%9f%d1%81%d0%b5%d0%b2%d0%b4%d0%be%d0%bd%d1%96%d0%bc%d0%b8-Git">Псевдоніми Git</a> </li> <li> 2.8 <a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>3. <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%93%d1%96%d0%bb%d0%ba%d0%b8-%d1%83-%d0%ba%d1%96%d0%bb%d1%8c%d0%ba%d0%be%d1%85-%d1%81%d0%bb%d0%be%d0%b2%d0%b0%d1%85">Галуження в git</a></h2> <ol> <li> 3.1 <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%93%d1%96%d0%bb%d0%ba%d0%b8-%d1%83-%d0%ba%d1%96%d0%bb%d1%8c%d0%ba%d0%be%d1%85-%d1%81%d0%bb%d0%be%d0%b2%d0%b0%d1%85">Гілки у кількох словах</a> </li> <li> 3.2 <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%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-%d0%b3%d0%b0%d0%bb%d1%83%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%b7%d0%bb%d0%b8%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Основи галуження та зливання</a> </li> <li> 3.3 <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%a3%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d1%96%d0%bd%d0%bd%d1%8f-%d0%b3%d1%96%d0%bb%d0%ba%d0%b0%d0%bc%d0%b8">Управління гілками</a> </li> <li> 3.4 <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%d1%80%d0%be%d1%86%d0%b5%d1%81%d0%b8-%d1%80%d0%be%d0%b1%d0%be%d1%82%d0%b8-%d0%b7-%d0%b3%d1%96%d0%bb%d0%ba%d0%b0%d0%bc%d0%b8">Процеси роботи з гілками</a> </li> <li> 3.5 <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%92%d1%96%d0%b4%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d1%96-%d0%b3%d1%96%d0%bb%d0%ba%d0%b8">Віддалені гілки</a> </li> <li> 3.6 <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> </li> <li> 3.7 <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%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>4. <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%9f%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d0%b8">Git на сервері</a></h2> <ol> <li> 4.1 <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%9f%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d0%b8" class="active">Протоколи</a> </li> <li> 4.2 <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%9e%d1%82%d1%80%d0%b8%d0%bc%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d1%96">Отримання Git на сервері</a> </li> <li> 4.3 <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%93%d0%b5%d0%bd%d0%b5%d1%80%d0%b0%d1%86%d1%96%d1%8f-%d0%b2%d0%b0%d1%88%d0%be%d0%b3%d0%be-%d0%bf%d1%83%d0%b1%d0%bb%d1%96%d1%87%d0%bd%d0%be%d0%b3%d0%be-%d0%ba%d0%bb%d1%8e%d1%87%d0%b0-SSH">Генерація вашого публічного ключа SSH</a> </li> <li> 4.4 <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%9d%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%a1%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d1%83">Налаштування Серверу</a> </li> <li> 4.5 <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%94%d0%b5%d0%bc%d0%be%d0%bd-Git">Демон Git</a> </li> <li> 4.6 <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">Розумний HTTP</a> </li> <li> 4.7 <a href="/book/uk/v2/Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d1%96-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/uk/v2/Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d1%96-GitLab">GitLab</a> </li> <li> 4.9 <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%92%d0%b0%d1%80%d1%96%d0%b0%d0%bd%d1%82%d0%b8-%d1%81%d1%82%d0%be%d1%80%d0%be%d0%bd%d0%bd%d1%8c%d0%be%d0%b3%d0%be-%d1%85%d0%be%d1%81%d1%82%d0%b8%d0%bd%d0%b3%d1%83">Варіанти стороннього хостингу</a> </li> <li> 4.10 <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%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/uk/v2/%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9-Git-%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d1%96-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d0%b8-%d1%80%d0%be%d0%b1%d0%be%d1%82%d0%b8">Розподілений Git</a></h2> <ol> <li> 5.1 <a href="/book/uk/v2/%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9-Git-%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d1%96-%d0%bf%d1%80%d0%be%d1%86%d0%b5%d1%81%d0%b8-%d1%80%d0%be%d0%b1%d0%be%d1%82%d0%b8">Розподілені процеси роботи</a> </li> <li> 5.2 <a href="/book/uk/v2/%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9-Git-%d0%92%d0%bd%d0%b5%d1%81%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b7%d0%bc%d1%96%d0%bd-%d0%b4%d0%be-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%83">Внесення змін до проекту</a> </li> <li> 5.3 <a href="/book/uk/v2/%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9-Git-%d0%a1%d1%83%d0%bf%d1%80%d0%be%d0%b2%d0%be%d0%b4%d0%b6%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%83">Супроводжування проекту</a> </li> <li> 5.4 <a href="/book/uk/v2/%d0%a0%d0%be%d0%b7%d0%bf%d0%be%d0%b4%d1%96%d0%bb%d0%b5%d0%bd%d0%b8%d0%b9-Git-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/uk/v2/GitHub-%d0%a1%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%be%d0%b1%d0%bb%d1%96%d0%ba%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%83">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/uk/v2/GitHub-%d0%a1%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%be%d0%b1%d0%bb%d1%96%d0%ba%d0%be%d0%b2%d0%be%d0%b3%d0%be-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%83">Створення та налаштування облікового запису</a> </li> <li> 6.2 <a href="/book/uk/v2/GitHub-%d0%af%d0%ba-%d0%b7%d1%80%d0%be%d0%b1%d0%b8%d1%82%d0%b8-%d0%b2%d0%bd%d0%b5%d1%81%d0%be%d0%ba-%d0%b4%d0%be-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%83">Як зробити внесок до проекту</a> </li> <li> 6.3 <a href="/book/uk/v2/GitHub-%d0%a1%d1%83%d0%bf%d1%80%d0%be%d0%b2%d0%be%d0%b4%d0%b6%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%bf%d1%80%d0%be%d1%94%d0%ba%d1%82%d1%83">Супроводжування проєкту</a> </li> <li> 6.4 <a href="/book/uk/v2/GitHub-%d0%9a%d0%b5%d1%80%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%be%d1%80%d0%b3%d0%b0%d0%bd%d1%96%d0%b7%d0%b0%d1%86%d1%96%d1%94%d1%8e">Керування організацією</a> </li> <li> 6.5 <a href="/book/uk/v2/GitHub-%d0%a1%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-GitHub">Скриптування GitHub</a> </li> <li> 6.6 <a href="/book/uk/v2/GitHub-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%92%d0%b8%d0%b1%d1%96%d1%80-%d1%80%d0%b5%d0%b2%d1%96%d0%b7%d1%96%d0%b9">Інструменти Git</a></h2> <ol> <li> 7.1 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%92%d0%b8%d0%b1%d1%96%d1%80-%d1%80%d0%b5%d0%b2%d1%96%d0%b7%d1%96%d0%b9">Вибір ревізій</a> </li> <li> 7.2 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%86%d0%bd%d1%82%d0%b5%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%b2%d0%bd%d0%b5-%d1%96%d0%bd%d0%b4%d0%b5%d0%ba%d1%81%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Інтерактивне індексування</a> </li> <li> 7.3 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%a5%d0%be%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d1%87%d0%b8%d1%89%d0%b5%d0%bd%d0%bd%d1%8f">Ховання та чищення</a> </li> <li> 7.4 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%9f%d1%96%d0%b4%d0%bf%d0%b8%d1%81%d0%b0%d0%bd%d0%bd%d1%8f-%d0%bf%d1%80%d0%b0%d1%86%d1%96">Підписання праці</a> </li> <li> 7.5 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%9f%d0%be%d1%88%d1%83%d0%ba">Пошук</a> </li> <li> 7.6 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%9f%d0%b5%d1%80%d0%b5%d0%bf%d0%b8%d1%81%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%96%d1%81%d1%82%d0%be%d1%80%d1%96%d1%97">Переписування історії</a> </li> <li> 7.7 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%a3%d1%81%d0%b2%d1%96%d0%b4%d0%be%d0%bc%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-%d1%81%d0%ba%d0%b8%d0%b4%d0%b0%d0%bd%d0%bd%d1%8f-reset">Усвідомлення скидання (reset)</a> </li> <li> 7.8 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%a1%d0%ba%d0%bb%d0%b0%d0%b4%d0%bd%d0%b5-%d0%b7%d0%bb%d0%b8%d1%82%d1%82%d1%8f">Складне злиття</a> </li> <li> 7.9 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%97%d0%bd%d0%b5%d0%b2%d0%b0%d0%b4%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b7-Git">Зневадження з Git</a> </li> <li> 7.11 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%9f%d1%96%d0%b4%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%96">Підмодулі</a> </li> <li> 7.12 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%9f%d0%b0%d0%ba%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Пакування</a> </li> <li> 7.13 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%97%d0%b0%d0%bc%d1%96%d0%bd%d0%b0">Заміна</a> </li> <li> 7.14 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%97%d0%b1%d0%b5%d1%80%d0%b5%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d0%bf%d0%be%d1%81%d0%b2%d1%96%d0%b4%d1%87%d0%b5%d0%bd%d0%bd%d1%8f-credential">Збереження посвідчення (credential)</a> </li> <li> 7.15 <a href="/book/uk/v2/%d0%86%d0%bd%d1%81%d1%82%d1%80%d1%83%d0%bc%d0%b5%d0%bd%d1%82%d0%b8-Git-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>8. <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%9a%d0%be%d0%bd%d1%84%d1%96%d0%b3%d1%83%d1%80%d0%b0%d1%86%d1%96%d1%8f-Git">Налаштування Git</a></h2> <ol> <li> 8.1 <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%9a%d0%be%d0%bd%d1%84%d1%96%d0%b3%d1%83%d1%80%d0%b0%d1%86%d1%96%d1%8f-Git">Конфігурація Git</a> </li> <li> 8.2 <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">Атрибути Git</a> </li> <li> 8.3 <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%93%d0%b0%d0%ba%d0%b8-hooks-Git">Гаки (hooks) Git</a> </li> <li> 8.4 <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%9f%d1%80%d0%b8%d0%ba%d0%bb%d0%b0%d0%b4-%d0%bf%d0%be%d0%bb%d1%96%d1%82%d0%b8%d0%ba%d0%b8-%d0%ba%d0%be%d1%80%d0%b8%d1%81%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%b2%d0%b8%d0%ba%d0%be%d0%bd%d1%83%d0%b2%d0%b0%d0%bd%d0%be%d1%97-Git-%d0%be%d0%bc">Приклад політики користування виконуваної Git-ом</a> </li> <li> 8.5 <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%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/uk/v2/Git-and-Other-Systems-Git-%d1%8f%d0%ba-%d0%ba%d0%bb%d1%96%d1%94%d0%bd%d1%82">Git and Other Systems</a></h2> <ol> <li> 9.1 <a href="/book/uk/v2/Git-and-Other-Systems-Git-%d1%8f%d0%ba-%d0%ba%d0%bb%d1%96%d1%94%d0%bd%d1%82">Git як клієнт</a> </li> <li> 9.2 <a href="/book/uk/v2/Git-and-Other-Systems-%d0%9c%d1%96%d0%b3%d1%80%d0%b0%d1%86%d1%96%d1%8f-%d0%bd%d0%b0-Git">Міграція на Git</a> </li> <li> 9.3 <a href="/book/uk/v2/Git-and-Other-Systems-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9a%d1%83%d1%85%d0%be%d0%bd%d0%bd%d1%96-%d1%82%d0%b0-%d0%bf%d0%b0%d1%80%d0%b0%d0%b4%d0%bd%d1%96-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8">Git зсередини</a></h2> <ol> <li> 10.1 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9a%d1%83%d1%85%d0%be%d0%bd%d0%bd%d1%96-%d1%82%d0%b0-%d0%bf%d0%b0%d1%80%d0%b0%d0%b4%d0%bd%d1%96-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8">Кухонні та парадні команди</a> </li> <li> 10.2 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9e%d0%b1%e2%80%99%d1%94%d0%ba%d1%82%d0%b8-Git">Об’єкти Git</a> </li> <li> 10.3 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9f%d0%be%d1%81%d0%b8%d0%bb%d0%b0%d0%bd%d0%bd%d1%8f-Git">Посилання Git</a> </li> <li> 10.4 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%a4%d0%b0%d0%b9%d0%bb%d0%b8-%d0%bf%d0%b0%d0%ba%d1%83%d0%bd%d0%ba%d0%b8">Файли пакунки</a> </li> <li> 10.5 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%a1%d0%bf%d0%b5%d1%86%d0%b8%d1%84%d1%96%d0%ba%d0%b0%d1%86%d1%96%d1%8f-%d0%bf%d0%be%d1%81%d0%b8%d0%bb%d0%b0%d0%bd%d1%8c-refspec">Специфікація посилань (refspec)</a> </li> <li> 10.6 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9f%d1%80%d0%be%d1%82%d0%be%d0%ba%d0%be%d0%bb%d0%b8-%d0%bf%d0%b5%d1%80%d0%b5%d0%b4%d0%b0%d1%87%d1%96">Протоколи передачі</a> </li> <li> 10.7 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%a1%d1%83%d0%bf%d1%80%d0%be%d0%b2%d0%be%d0%b4%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%b2%d1%96%d0%b4%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b4%d0%b0%d0%bd%d0%b8%d1%85">Супроводження та відновлення даних</a> </li> <li> 10.8 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%97%d0%bc%d1%96%d0%bd%d0%bd%d1%96-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0">Змінні середовища</a> </li> <li> 10.9 <a href="/book/uk/v2/Git-%d0%b7%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%b8%d0%bd%d0%b8-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-%d0%93%d1%80%d0%b0%d1%84%d1%96%d1%87%d0%bd%d1%96-%d1%96%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81%d0%b8">Додаток A: Git в інших середовищах</a></h2> <ol> <li> A1.1 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-%d0%93%d1%80%d0%b0%d1%84%d1%96%d1%87%d0%bd%d1%96-%d1%96%d0%bd%d1%82%d0%b5%d1%80%d1%84%d0%b5%d0%b9%d1%81%d0%b8">Графічні інтерфейси</a> </li> <li> A1.2 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-Git-%d1%83-Visual-Studio">Git у Visual Studio</a> </li> <li> A1.3 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-Git-%d0%b2-Eclipse">Git в Eclipse</a> </li> <li> A1.4 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-Git-%d1%83-Bash">Git у Bash</a> </li> <li> A1.5 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-Git-%d1%83-Zsh">Git у Zsh</a> </li> <li> A1.6 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-Git-%d1%83-Powershell">Git у Powershell</a> </li> <li> A1.7 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-A:-Git-%d0%b2-%d1%96%d0%bd%d1%88%d0%b8%d1%85-%d1%81%d0%b5%d1%80%d0%b5%d0%b4%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d1%85-%d0%9f%d1%96%d0%b4%d1%81%d1%83%d0%bc%d0%be%d0%ba">Підсумок</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-B:-%d0%92%d0%b1%d1%83%d0%b4%d0%be%d0%b2%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d1%83-%d0%b2%d0%b0%d1%88%d1%96-%d0%b7%d0%b0%d1%81%d1%82%d0%be%d1%81%d1%83%d0%bd%d0%ba%d0%b8-Git-%d0%b7-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d1%8f%d0%b4%d0%ba%d0%b0">Додаток B: Вбудовування Git у ваші застосунки</a></h2> <ol> <li> A2.1 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-B:-%d0%92%d0%b1%d1%83%d0%b4%d0%be%d0%b2%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d1%83-%d0%b2%d0%b0%d1%88%d1%96-%d0%b7%d0%b0%d1%81%d1%82%d0%be%d1%81%d1%83%d0%bd%d0%ba%d0%b8-Git-%d0%b7-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%bd%d0%be%d0%b3%d0%be-%d1%80%d1%8f%d0%b4%d0%ba%d0%b0">Git з командного рядка</a> </li> <li> A2.2 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-B:-%d0%92%d0%b1%d1%83%d0%b4%d0%be%d0%b2%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d1%83-%d0%b2%d0%b0%d1%88%d1%96-%d0%b7%d0%b0%d1%81%d1%82%d0%be%d1%81%d1%83%d0%bd%d0%ba%d0%b8-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-B:-%d0%92%d0%b1%d1%83%d0%b4%d0%be%d0%b2%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d1%83-%d0%b2%d0%b0%d1%88%d1%96-%d0%b7%d0%b0%d1%81%d1%82%d0%be%d1%81%d1%83%d0%bd%d0%ba%d0%b8-JGit">JGit</a> </li> <li> A2.4 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-B:-%d0%92%d0%b1%d1%83%d0%b4%d0%be%d0%b2%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-Git-%d1%83-%d0%b2%d0%b0%d1%88%d1%96-%d0%b7%d0%b0%d1%81%d1%82%d0%be%d1%81%d1%83%d0%bd%d0%ba%d0%b8-go-git">go-git</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9d%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%ba%d0%be%d0%bd%d1%84%d1%96%d0%b3%d1%83%d1%80%d0%b0%d1%86%d1%96%d1%8f">Додаток C: Команди Git</a></h2> <ol> <li> A3.1 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9d%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%ba%d0%be%d0%bd%d1%84%d1%96%d0%b3%d1%83%d1%80%d0%b0%d1%86%d1%96%d1%8f">Налаштування та конфігурація</a> </li> <li> A3.2 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9e%d1%82%d1%80%d0%b8%d0%bc%d0%b0%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d1%81%d1%82%d0%b2%d0%be%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%96%d0%b2">Отримання та створення проектів</a> </li> <li> A3.3 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%91%d0%b0%d0%b7%d0%be%d0%b2%d0%b5-%d0%b7%d0%b1%d0%b5%d1%80%d0%b5%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2%d1%96%d0%b4%d0%b1%d0%b8%d1%82%d0%ba%d1%96%d0%b2">Базове збереження відбитків</a> </li> <li> A3.4 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%93%d0%b0%d0%bb%d1%83%d0%b6%d0%b5%d0%bd%d0%bd%d1%8f-%d1%82%d0%b0-%d0%b7%d0%bb%d0%b8%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Галуження та зливання</a> </li> <li> A3.5 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9f%d0%be%d1%88%d0%b8%d1%80%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b9-%d0%be%d0%bd%d0%be%d0%b2%d0%bb%d0%b5%d0%bd%d0%bd%d1%8f-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d1%96%d0%b2">Поширення й оновлення проектів</a> </li> <li> A3.6 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9e%d0%b3%d0%bb%d1%8f%d0%b4-%d1%82%d0%b0-%d0%bf%d0%be%d1%80%d1%96%d0%b2%d0%bd%d1%8f%d0%bd%d0%bd%d1%8f">Огляд та порівняння</a> </li> <li> A3.7 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%97%d0%bd%d0%b5%d0%b2%d0%b0%d0%b4%d0%b6%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Зневаджування</a> </li> <li> A3.8 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9b%d0%b0%d1%82%d0%b0%d0%bd%d0%bd%d1%8f-patching">Латання (patching)</a> </li> <li> A3.9 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%95%d0%bb%d0%b5%d0%ba%d1%82%d1%80%d0%be%d0%bd%d0%bd%d0%b0-%d0%bf%d0%be%d1%88%d1%82%d0%b0">Електронна пошта</a> </li> <li> A3.10 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%97%d0%be%d0%b2%d0%bd%d1%96%d1%88%d0%bd%d1%96-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b8">Зовнішні системи</a> </li> <li> A3.11 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%90%d0%b4%d0%bc%d1%96%d0%bd%d1%96%d1%81%d1%82%d1%80%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f">Адміністрування</a> </li> <li> A3.12 <a href="/book/uk/v2/%d0%94%d0%be%d0%b4%d0%b0%d1%82%d0%be%d0%ba-C:-%d0%9a%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8-Git-%d0%9a%d1%83%d1%85%d0%be%d0%bd%d0%bd%d1%96-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b8">Кухонні команди</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.1 Git на сервері - Протоколи</h1> <div> <p> Наразі, ви маєте бути в змозі виконувати більшість повсякденних задач, які вам зустрінуться при використанні Git. Втім, щоб мати можливість співпрацювати за допомогою Git, вам треба мати віддалене сховище Git. Хоч ви й можете викладати та забирати зміни зі сховищ кожної людини, це не рекомендується, адже так дуже легко заплутатися в тому, хто що робить, якщо не бути дуже обережним. До того ж, якщо ви бажаєте, щоб ваші колеги мали доступ до сховища навіть коли ваш комп’ютер поза мережею, мати більш надійне спільне сховище зазвичай розумно. Отже, зазвичай для співпраці з ким-небудь налаштовують проміжне сховище, до якого ви обидва маєте доступ, та викладаєте до і забираєте з нього.</p><p>Запустити Git сервер доволі просто.</p><p>Спершу вам треба обрати протокол, яким ви бажаєте щоб ваш сервер спілкувався. У першій секції цього розділу ми розповімо про доступні протоколи, переваги та недоліки кожного. Наступна секція пояснить деякі типові схеми використання цих протоколів та як змусити ваш сервер з ними працювати. В останній, ми поговоримо про деякі опції хостингу, якщо ви не проти зберігати ваш код на чужому сервері, та не бажаєте мати клопіт зі встановленням та підтримкою вашого власного серверу.</p><p>Якщо вас не цікавить запуск власного серверу, ви можете відразу перейти до останньої секції розділу, щоб побачити деякі варіанти налаштування хостингу та переходити до наступного розділу, де ми розглянемо різноманітні деталі роботи в середовищі розподіленої системи контролю коду.</p><p>Віддалене сховище зазвичай <em>чисте сховище</em> — сховище Git, що не має робочої теки. Адже сховище використовується тільки як місце для співпраці, нема підстав мати копію знімку на диску. Там просто дані Git. Найпростішими словами, чисте сховище містить тільки вміст теки <code>.git</code> вашого проекту та більше нічого.</p> <h2 id="_протоколи">Протоколи</h2> <div class="paragraph"> <p>Git може використовувати чотири різні протоколи для передачі даних: Локальний, HTTP, Secure Shell (SSH) та Git. Тут ми розглянемо що вони таке та у яких обставинах ви бажаєте (чи не бажаєте) їх використовувати.</p> </div> <div class="sect3"> <h3 id="_локальний_протокол">Локальний протокол</h3> <div class="paragraph"> <p> <em>Локальний протокол</em> найпростіший, він потребує щоб віддалене сховище було в іншій теці на тій самій машині. Він часто використовується, якщо всі з вашої команди мають доступ до розподіленої файлової системи на кшталт NFS , чи в менш імовірному випадку, що всі заходять на один комп’ютер. Останній варіант далекий від ідеалу, адже усі копії вашого сховища перебувають на одному комп’ютері, що підвищує ймовірність катастрофічної втрати.</p> </div> <div class="paragraph"> <p>Якщо у вас спільна файлова система, то ви можете клонувати, викладати до, та забирати з локального файлового сховища. Щоб зробити клон такого сховища чи додати як віддалене сховище до існуючого проекту, достатньо використати шлях до сховища в якості URL. Наприклад, щоб зробити клон локального сховища, ви можете виконати щось таке:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone /srv/git/project.git</code></pre> </div> </div> <div class="paragraph"> <p>Чи зробити так:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone file:///srv/git/project.git</code></pre> </div> </div> <div class="paragraph"> <p>Git діє трошки по іншому, якщо ви явно задаєте <code>file://</code> на початку URL. Якщо ви вкажете тільки шлях, Git спробує використати тверде посилання (hardlink), або просто скопіює теку, якщо потрібно. Якщо ви вкажете <code>file://</code>, Git запустить процеси, що він зазвичай використовує для передачі даних через мережу, що зазвичай є набагато менш ефективним. Зазвичай префікс <code>file://</code> використовують, якщо бажають отримати чисту копію сховища без зовнішніх посилань чи об’єктів — зазвичай після імпорту з іншої СКВ, чи чогось подібного (дивіться <a href="/book/uk/v2/ch00/ch10-git-internals">Git зсередини</a> щодо завдань підтримки). Ми будемо користуватись звичайним шляхом, адже це майже завжди швидше.</p> </div> <div class="paragraph"> <p>Щоб додати локальне сховище до існуючого проекту під контролем Git, ви можете виконати щось таке:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote add local_proj /srv/git/project.git</code></pre> </div> </div> <div class="paragraph"> <p>Після цього ви можете викладати до та забирати з цього віддаленого сховища за допомогою нової назви віддаленого сховища <code>local_proj</code>, ніби ви робите це через мережу.</p> </div> <div class="sect4"> <h4 id="_переваги">Переваги</h4> <div class="paragraph"> <p>Перевага локальних сховищ в тому, що вони прості та використовують існуючи права доступу до файлів та доступу до мережі. Якщо у вас вже є спільна файлова система, до якої має доступ уся ваша команда, налаштувати сховище дуже просто. Ви кладете чисту копію свого сховища в якесь місце, до якого всі мають доступ, та налаштовуєте права читання/запису, як і для будь-якої іншої спільної теки. Ми розглянемо як експортувати чисту копію сховища для цього в <a href="/book/uk/v2/ch00/_getting_git_on_a_server">Отримання Git на сервері</a>.</p> </div> <div class="paragraph"> <p>Це також гарний варіант, щоб швидко взяти працю з іншого робочого сховища. Якщо ваш колега працює з вами над одним проектом та ви бажаєте щось перевірити, виконати команду схожу на <code>git pull /home/taras/project</code> часто легше, ніж щоб вони викладали до віддаленого серверу, а ви з нього потім отримували зміни.</p> </div> </div> <div class="sect4"> <h4 id="_недоліки">Недоліки</h4> <div class="paragraph"> <p>Головний недолік цього методу в тому, що налаштувати спільний доступ з декількох вузлів зазвичай складніше, ніж простий мережевий доступ. Якщо ви бажаєте викладати з вашого ноутбуку, коли ви вдома, ви маєте примаунити віддалений диск, що може бути складно та повільно порівняно зі основаним на мережі доступом.</p> </div> <div class="paragraph"> <p>Важливо зазначити, що це не обов’язково найшвидша опція, якщо ви використовуєте спільний диск якогось типу. Локальне сховище швидке тільки якщо у вас є швидкий доступ до даних. Сховище на NFS зазвичай повільніше, ніж сховище через SSH на тому ж сервері, що дозволяє Git працювати з локальними дисками обох систем.</p> </div> <div class="paragraph"> <p>Нарешті, цей протокол не захищає схвовище від випадкових пошкоджень. Кожен користувач має повний доступ до ``віддаленої'' теки, і ніщо не заважає їм змінити чи вилучити внутрішні файли Git і зіпсувати сховище.</p> </div> </div> </div> <div class="sect3"> <h3 id="_протоколи_http">Протоколи HTTP</h3> <div class="paragraph"> <p>Git може спілкуватись через HTTP у двох режимах. До версії 1.6.6 у Git був тільки один метод, що був дуже простим та зазвичай тільки для читання. У версії 1.6.6 та новіших, був доданий кмітливіший протокол, що включає можливість Git проводити розумну передачу даних, схожу на те, як він працює через SSH. В останні декілька років, цей новий протокол HTTP став дуже розповсюдженим, адже він простіший для користувача та кмітливиший щодо методу передачі. Новішу версію часто називають <em>розумним</em> HTTP протоколом, а старішу — <em>тупим</em> HTTP Ми спочатку поговоримо про Розумний HTTP протокол.</p> </div> <div class="sect4"> <h4 id="_розумний_http">Розумний HTTP</h4> <div class="paragraph"> <p> Розумний HTTP діє дуже схоже на те, як працює SSH чи Git протоколи, проте працює через звичайні HTTPS порти та може використовувати різноманітні механізми авторизації HTTP, отже часто цей метод простіший для користувачів, ніж SSH, адже можна використовувати логін/пароль авторизації замість налаштування ключів SSH.</p> </div> <div class="paragraph"> <p>Розумний HTTP напевно став найпопулярнішим методом використання Git, адже його можна налаштувати як для анонімної праці, як протокол <code>git://</code>, та до нього можна викладати з авторизацією та шифрування, як і з SSH протоколом. Замість налаштування різних URLів для цих речей, ви можете використовувати для них однин URL. Якщо ви спробуєте викласти, а сховище вимагає авторизації (як зазвичай і повинно бути), сервер запитає логін та пароль. Те ж саме стосується і доступу на читання.</p> </div> <div class="paragraph"> <p>Насправді, для таких сервісів як GitHub, URL, що ви використовуєте для перегляду сховища в мережі (наприклад, <a href="https://github.com/schacon/simplegit" class="bare">https://github.com/schacon/simplegit</a>) збігається з URLом, що ви можете використовувати для клонування, та, якщо у вас є доступ, викладати до нього.</p> </div> </div> <div class="sect4"> <h4 id="_тупий_http">Тупий HTTP</h4> <div class="paragraph"> <p> Якщо сервер не відповідає на розумний сервіс HTTP, клієнт Git спробує відкотитись до простішого тупого HTTP протоколу. Тупий протокол очікує, що чисте сховище Git буде обслуговуватись як звичайні файли на веб сервері. Краса тупого протоколу HTTP в простоті його налаштування. Вам треба просто викласти чисте сховище Git під коренем документів HTTP та встановити потрібний гачок (хук, <code>hook</code>) <code>post-update</code>, ось і все (Дивіться <a href="/book/uk/v2/ch00/_git_hooks">Гаки (hooks) Git</a>). Після цього, усі, в кого є доступ до веб серверу, на котрий ви скопіювали своє сховище, можуть зробити його клон. Щоб дати доступ на читання вашого сховища через HTTP, зробіть щось таке:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cd /var/www/htdocs/ $ git clone --bare /path/to/git_project gitproject.git $ cd gitproject.git $ mv hooks/post-update.sample hooks/post-update $ chmod a+x hooks/post-update</code></pre> </div> </div> <div class="paragraph"> <p>Ось і все. Гачок <code>post-update</code> входить у стандартну поставку Git, та виконує відповідні команди (<code>git update-server-info</code>), щоб HTTP діставання та клонування працювало правильно. Ця команда виконується, коли ви викладаєте до цього сховища (можливо через SSH). Тоді інші люде люди зможуть клонувати за допомогою</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone https://example.com/gitproject.git</code></pre> </div> </div> <div class="paragraph"> <p>Саме у цьому випадку, ми використовуємо шлях <code>/var/www/htdocs</code>, що є звичайним для серверів Apache, проте ви можете використовувати статичний веб сервер — просто покладіть чисте сховище до нього. Дані Git видаються як прості статичні файли (дивіться <a href="/book/uk/v2/ch00/ch10-git-internals">Git зсередини</a> для докладнішої розповіді про те, як саме вони видаються)</p> </div> <div class="paragraph"> <p>Зазвичай ви або виберете Розумний HTTP сервер з можливістю читання/запису, або просто організуєте доступ до файлів з правом тільки на читання за допомогою Тупої опції. Дуже рідко ці два варіанти суміщають.</p> </div> </div> <div class="sect4"> <h4 id="_переваги_2">Переваги</h4> <div class="paragraph"> <p>Ми зосередимось на перевагах Розумної версії HTTP протоколу.</p> </div> <div class="paragraph"> <p>Простота використання одного URL для всіх типів доступу та те, що сервер потребує авторизації тільки коли потрібно робить користування сервером дуже простим для користувача. Можливість авторизації з логіном та паролем також велика перевага над SSH, оскільки користувачі не мають генерувати SSH ключі локально та завантажувати публічний ключ до серверу до того, як вони зможуть взаємодіяти з ним. Для менш досвідчених користувачів, чи користувачів, що використовують системи де SSH менш розповсюджений, це може стати головною перевагою в зручності. Це також дуже швидкий та ефективний протокол, схожий на SSH.</p> </div> <div class="paragraph"> <p>Ви також можете надавати доступ до вашого сховища тільки на читання через HTTPS, тобто ви можете шифрувати зміст передачі. Чи ви можете навіть змусити клієнтів використовувати специфічні підписані SSL сертифікати.</p> </div> <div class="paragraph"> <p>Ще одна гарна властивість HTTPS в тому, що це такі розповсюджені протоколи, що корпоративні мережеві екрани зазвичай налаштовані дозволяти передачу через ці порти.</p> </div> </div> <div class="sect4"> <h4 id="_недоліки_2">Недоліки</h4> <div class="paragraph"> <p>Git через HTTPS може бути трохи складнішим у порівнянні з SSH на деяких серверах. Окрім цього, інші протоколи мають дуже мало переваг над розумним HTTP для надання доступу до даних Git.</p> </div> <div class="paragraph"> <p>Якщо ви використовуєте HTTP для авторизованого викладання, посвідчення вашого акаунту іноді може буди складнішим, ніж за допомогою ключів через SSH. Втім існує декілька утиліт для кешування даних входу, наприклад Keychaing access на macOS та Credential Manager на Windows, що дозволяє уникнути цієї проблеми. Прочитайте <a href="/book/uk/v2/ch00/_credential_caching">Збереження посвідчення (credential)</a> щоб дізнатись як налаштувати безпечне кешування HTTP паролю на вашій системі.</p> </div> </div> </div> <div class="sect3"> <h3 id="_протокол_ssh">Протокол SSH</h3> <div class="paragraph"> <p> SSh доволі поширений протокол передачі для Git при самостійному хостінгу. Причина в тому, що доступ SSH до серверу в більшості випадків вже налаштовано — а якщо ні, це дуже легко зробити. Крім того, мережевий протокол SSH має авторизацію і, оскільки він повсюдний, зазвичай його легко налаштовувати та використовувати.</p> </div> <div class="paragraph"> <p>Щоб зробити клон Git сховища через SSH, ви можете задати <code>ssh://</code> URL ось так:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone ssh://[user@]server/project.git</code></pre> </div> </div> <div class="paragraph"> <p>Чи ви можете використати скорочений синтаксис (подібний до scp) для SSH протоколу:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone [user@]server:project.git</code></pre> </div> </div> <div class="paragraph"> <p>Ви також можете не задавати користувача, тоді Git використає поточного користувача. В обох наведених вище прикладах Git використає поточного системного користувача, якщо не задати опціонального імені користувача.</p> </div> <div class="sect4"> <h4 id="_переваги_3">Переваги</h4> <div class="paragraph"> <p>Є багато переваг використання SSH. По-перше, SSH відносно легко налаштувати — демони SSH є повсюди, багато мережевих адміністраторів мають з ними досвід, та багато дистрибутивів поставляються з ними та навіть мають утиліти щоб ними керувати. Далі, доступ через SSH безпечний — усі дані передачі зашифровані та авторизовані. Наостанок, як і HTTPS, Git та Локальний протоколи, SSH є ефективним, робить дані якомога компактними до відправки.</p> </div> </div> <div class="sect4"> <h4 id="_недоліки_3">Недоліки</h4> <div class="paragraph"> <p>Недоліком SSH є те, що він не підтримує анонімний доступ до вашого сховища. Якщо ви використовуєте SSH, користувачі зобов’язані мати SSH доступ до вашої, навіть тільки для читання, через що SSH не є продуктивним для проектів з відкритим кодом, у яких люди цілком можуть хотіти просто склонувати його, щоб ознайомитися з ним. Якщо ви використовуєте його тільки в межах вашої корпоративної мережі, SSH може бути єдиним протоколом, що вам потрібен. Якщо ви бажаєте дозволити анонімний доступ тільки для читання до ваших проектів та також бажаєте використовувати SSH, вам доведеться налаштувати SSH для надсилання змін, проте щось інше, щоб решта людей здобували зміни.</p> </div> </div> </div> <div class="sect3"> <h3 id="_протокол_git">Протокол Git</h3> <div class="paragraph"> <p> Наступним є протокол Git. Це спеціальний демон, що входить до пакету Git. Він слухає на виділеному порту (9418), що надає сервіс схожий на SSH протокол, проте без жодної авторизації. Щоб надати доступ до сховища за допомогою протоколу Git, ви маєте створити файл <code>git-daemon-export-ok</code> — демон відмовляється роздавати сховище без цього файлу — проте ніяких інших засобів безпеки не надає. Або сховище Git доступно всім, або нікому. Це означає, що зазвичай через цей протокол забороняється викладання. Ви можете ввімкнути доступ до викладання. Проте за відсутності авторизації, якщо ви це зробите, будь-хто в мережі, хто знайде це сховище, зможе до нього викладати. Достатньо сказати, що таке має сенс доволі рідко.</p> </div> <div class="sect4"> <h4 id="_переваги_4">Переваги</h4> <div class="paragraph"> <p>Git протокол часто є найшвидшим доступним протоколом передачі в мережі. Якщо ви передаєте великі обсяги даних для відкритого проекту чи роздаєте дуже великий проект, що не вимагає авторизації для читання, вірогідно ви забажаєте налаштувати Git демон для обслуговування вашого проекту. Він використовує той самий механізм передачі даних, що й SSH протокол, проте без додаткових витрат на шифрування та авторизацію.</p> </div> </div> <div class="sect4"> <h4 id="_недоліки_4">Недоліки</h4> <div class="paragraph"> <p>Головним недоліком протоколу Git є відсутність авторизації. Зазвичай небажано щоб протокол Git був єдиним протоколом доступу до вашого проекту. Зазвичай, його використовують у парі з SSH чи HTTPS доступом для декількох розробників, що мають право викладати (писати), а усі інші використовують <code>git://</code> для читання. Також це мабуть найскладніший для налаштування протокол. Для нього має працювати власний демон, що вимагає щось подібне до конфігурації <code>xinetd</code>, що не завжди схоже на прогулянку по парку. Також це вимагає щоб мережеві екрани дозволяли доступ до порту 9418, що не є стандартним дозволеним корпоративним портом. За великими корпоративними мережевими екранами, цей незрозумілий порт зазвичай є заблокованим.</p> </div> </div> </div> <div id="nav"><a href="/book/uk/v2/Галуження-в-git-Підсумок">prev</a> | <a href="/book/uk/v2/Git-на-сервері-Отримання-Git-на-сервері">next</a></div> </div> </div> </div> </div> <footer> <div class="site-source"> <a href="/site">About this site</a><br> Patches, suggestions, and comments are welcome. </div> <div class="sfc-member"> Git is a member of <a href="/sfc">Software Freedom Conservancy</a> </div> </footer> <a href="#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top"> <img src="/images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/> </a> <script src="/js/jquery-1.7.1.min.js"></script> <script src="/js/jquery-ui-1.8.18.custom.min.js"></script> <script src="/js/jquery.defaultvalue.js"></script> <script src="/js/session.min.js"></script> <script src="/js/application.min.js"></script> </div> </body> </html>