CINXE.COM

Git - Protokoli

<!DOCTYPE html> <html lang="sl"> <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 - Protokoli</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-sl">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/sl/v2/Za%c4%8detek-O-nadzoru-razli%c4%8dic">Začetek</a></h2> <ol> <li> 1.1 <a href="/book/sl/v2/Za%c4%8detek-O-nadzoru-razli%c4%8dic">O nadzoru različic</a> </li> <li> 1.2 <a href="/book/sl/v2/Za%c4%8detek-Kratka-zgodovina-Gita">Kratka zgodovina Gita</a> </li> <li> 1.3 <a href="/book/sl/v2/Za%c4%8detek-Kaj-je-Git%3F">Kaj je Git?</a> </li> <li> 1.4 <a href="/book/sl/v2/Za%c4%8detek-Ukazna-vrstica">Ukazna vrstica</a> </li> <li> 1.5 <a href="/book/sl/v2/Za%c4%8detek-Namestitev-Gita">Namestitev Gita</a> </li> <li> 1.6 <a href="/book/sl/v2/Za%c4%8detek-Prva-nastavitev-Gita">Prva nastavitev Gita</a> </li> <li> 1.7 <a href="/book/sl/v2/Za%c4%8detek-Pridobivanje-pomo%c4%8di">Pridobivanje pomoči</a> </li> <li> 1.8 <a href="/book/sl/v2/Za%c4%8detek-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/sl/v2/Osnove-Git-Pridobivanje-repozitorija-Git">Osnove Git</a></h2> <ol> <li> 2.1 <a href="/book/sl/v2/Osnove-Git-Pridobivanje-repozitorija-Git">Pridobivanje repozitorija Git</a> </li> <li> 2.2 <a href="/book/sl/v2/Osnove-Git-Snemanje-sprememb-v-repozitorij">Snemanje sprememb v repozitorij</a> </li> <li> 2.3 <a href="/book/sl/v2/Osnove-Git-Pregled-zgodovine-potrditev">Pregled zgodovine potrditev</a> </li> <li> 2.4 <a href="/book/sl/v2/Osnove-Git-Razveljavljanje-stvari">Razveljavljanje stvari</a> </li> <li> 2.5 <a href="/book/sl/v2/Osnove-Git-Delo-z-daljavami">Delo z daljavami</a> </li> <li> 2.6 <a href="/book/sl/v2/Osnove-Git-Ozna%c4%8devanje">Označevanje</a> </li> <li> 2.7 <a href="/book/sl/v2/Osnove-Git-Aliasi-Git">Aliasi Git</a> </li> <li> 2.8 <a href="/book/sl/v2/Osnove-Git-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/sl/v2/Veje-Git-Veje-na-kratko">Veje Git</a></h2> <ol> <li> 3.1 <a href="/book/sl/v2/Veje-Git-Veje-na-kratko">Veje na kratko</a> </li> <li> 3.2 <a href="/book/sl/v2/Veje-Git-Osnove-vej-in-zdru%c5%beevanja">Osnove vej in združevanja</a> </li> <li> 3.3 <a href="/book/sl/v2/Veje-Git-Upravljanje-vej">Upravljanje vej</a> </li> <li> 3.4 <a href="/book/sl/v2/Veje-Git-Poteki-dela-z-vejami">Poteki dela z vejami</a> </li> <li> 3.5 <a href="/book/sl/v2/Veje-Git-Oddaljene-veje">Oddaljene veje</a> </li> <li> 3.6 <a href="/book/sl/v2/Veje-Git-Ponovno-baziranje">Ponovno baziranje</a> </li> <li> 3.7 <a href="/book/sl/v2/Veje-Git-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/sl/v2/Git-na-stre%c5%beniku-Protokoli">Git na strežniku</a></h2> <ol> <li> 4.1 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Protokoli" class="active">Protokoli</a> </li> <li> 4.2 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Pridobitev-Gita-na-stre%c5%beniku">Pridobitev Gita na strežniku</a> </li> <li> 4.3 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Generiranje-va%c5%a1ih-javnih-klju%c4%8dev-SSH">Generiranje vaših javnih ključev SSH</a> </li> <li> 4.4 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Nastavitev-stre%c5%benika">Nastavitev strežnika</a> </li> <li> 4.5 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Prikriti-proces-Git">Prikriti proces Git</a> </li> <li> 4.6 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Pametni-HTTP">Pametni HTTP</a> </li> <li> 4.7 <a href="/book/sl/v2/Git-na-stre%c5%beniku-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/sl/v2/Git-na-stre%c5%beniku-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Mo%c5%benosti-gostovanja-pri-tretjih-ponudnikih">Možnosti gostovanja pri tretjih ponudnikih</a> </li> <li> 4.10 <a href="/book/sl/v2/Git-na-stre%c5%beniku-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/sl/v2/Porazdeljeni-Git-Porazdeljeni-poteki-dela">Porazdeljeni Git</a></h2> <ol> <li> 5.1 <a href="/book/sl/v2/Porazdeljeni-Git-Porazdeljeni-poteki-dela">Porazdeljeni poteki dela</a> </li> <li> 5.2 <a href="/book/sl/v2/Porazdeljeni-Git-Prispevek-k-projektu">Prispevek k projektu</a> </li> <li> 5.3 <a href="/book/sl/v2/Porazdeljeni-Git-Vzdr%c5%beevanje-projekta">Vzdrževanje projekta</a> </li> <li> 5.4 <a href="/book/sl/v2/Porazdeljeni-Git-Povzetek">Povzetek</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/sl/v2/GitHub-Namestitev-in-konfiguracija-ra%c4%8duna">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/sl/v2/GitHub-Namestitev-in-konfiguracija-ra%c4%8duna">Namestitev in konfiguracija računa</a> </li> <li> 6.2 <a href="/book/sl/v2/GitHub-Prispevek-k-projektu">Prispevek k projektu</a> </li> <li> 6.3 <a href="/book/sl/v2/GitHub-Vzdr%c5%beevanje-projekta">Vzdrževanje projekta</a> </li> <li> 6.4 <a href="/book/sl/v2/GitHub-Upravljanje-organizacije">Upravljanje organizacije</a> </li> <li> 6.5 <a href="/book/sl/v2/GitHub-Skriptni-GitHub">Skriptni GitHub</a> </li> <li> 6.6 <a href="/book/sl/v2/GitHub-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/sl/v2/Orodja-Git-Izbira-revizije">Orodja Git</a></h2> <ol> <li> 7.1 <a href="/book/sl/v2/Orodja-Git-Izbira-revizije">Izbira revizije</a> </li> <li> 7.2 <a href="/book/sl/v2/Orodja-Git-Interaktivno-pripravljanje">Interaktivno pripravljanje</a> </li> <li> 7.3 <a href="/book/sl/v2/Orodja-Git-Shranjevanje-na-varno-angl-stashing-in-%c4%8di%c5%a1%c4%8denje">Shranjevanje na varno (angl. stashing) in čiščenje</a> </li> <li> 7.4 <a href="/book/sl/v2/Orodja-Git-Podpisovanje-va%c5%a1ega-dela">Podpisovanje vašega dela</a> </li> <li> 7.5 <a href="/book/sl/v2/Orodja-Git-Iskanje">Iskanje</a> </li> <li> 7.6 <a href="/book/sl/v2/Orodja-Git-Prepisovanje-zgodovine">Prepisovanje zgodovine</a> </li> <li> 7.7 <a href="/book/sl/v2/Orodja-Git-Demistifikacija-ponastavitve">Demistifikacija ponastavitve</a> </li> <li> 7.8 <a href="/book/sl/v2/Orodja-Git-Napredno-zdru%c5%beevanje">Napredno združevanje</a> </li> <li> 7.9 <a href="/book/sl/v2/Orodja-Git-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/sl/v2/Orodja-Git-Razhro%c5%a1%c4%8devanje-z-Gitom">Razhroščevanje z Gitom</a> </li> <li> 7.11 <a href="/book/sl/v2/Orodja-Git-Podmoduli">Podmoduli</a> </li> <li> 7.12 <a href="/book/sl/v2/Orodja-Git-Povezovanje-v-pakete">Povezovanje v pakete</a> </li> <li> 7.13 <a href="/book/sl/v2/Orodja-Git-Zamenjava">Zamenjava</a> </li> <li> 7.14 <a href="/book/sl/v2/Orodja-Git-Shramba-poverilnic">Shramba poverilnic</a> </li> <li> 7.15 <a href="/book/sl/v2/Orodja-Git-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/sl/v2/Prilagoditev-Gita-Konfiguracija-Git">Prilagoditev Gita</a></h2> <ol> <li> 8.1 <a href="/book/sl/v2/Prilagoditev-Gita-Konfiguracija-Git">Konfiguracija Git</a> </li> <li> 8.2 <a href="/book/sl/v2/Prilagoditev-Gita-Atributi-Git">Atributi Git</a> </li> <li> 8.3 <a href="/book/sl/v2/Prilagoditev-Gita-Kljuke-Git">Kljuke Git</a> </li> <li> 8.4 <a href="/book/sl/v2/Prilagoditev-Gita-Primer-pravilnika,-ki-ga-uveljavlja-Git">Primer pravilnika, ki ga uveljavlja Git</a> </li> <li> 8.5 <a href="/book/sl/v2/Prilagoditev-Gita-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/sl/v2/Git-in-ostali-sistemi-Git-kot-odjemalec">Git in ostali sistemi</a></h2> <ol> <li> 9.1 <a href="/book/sl/v2/Git-in-ostali-sistemi-Git-kot-odjemalec">Git kot odjemalec</a> </li> <li> 9.2 <a href="/book/sl/v2/Git-in-ostali-sistemi-Migracija-na-Git">Migracija na Git</a> </li> <li> 9.3 <a href="/book/sl/v2/Git-in-ostali-sistemi-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/sl/v2/Notranjost-Gita-Napeljava-in-keramika">Notranjost Gita</a></h2> <ol> <li> 10.1 <a href="/book/sl/v2/Notranjost-Gita-Napeljava-in-keramika">Napeljava in keramika</a> </li> <li> 10.2 <a href="/book/sl/v2/Notranjost-Gita-Objekti-Git">Objekti Git</a> </li> <li> 10.3 <a href="/book/sl/v2/Notranjost-Gita-Reference-Git">Reference Git</a> </li> <li> 10.4 <a href="/book/sl/v2/Notranjost-Gita-Packfiles-datoteke-zmanj%c5%a1anih-podatkov">Packfiles (datoteke zmanjšanih podatkov)</a> </li> <li> 10.5 <a href="/book/sl/v2/Notranjost-Gita-Refspec">Refspec</a> </li> <li> 10.6 <a href="/book/sl/v2/Notranjost-Gita-Protokoli-prenosa">Protokoli prenosa</a> </li> <li> 10.7 <a href="/book/sl/v2/Notranjost-Gita-Vzdr%c5%beevanje-in-obnovitev-podatkov">Vzdrževanje in obnovitev podatkov</a> </li> <li> 10.8 <a href="/book/sl/v2/Notranjost-Gita-Spremenljivke-okolja">Spremenljivke okolja</a> </li> <li> 10.9 <a href="/book/sl/v2/Notranjost-Gita-Povzetek">Povzetek</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Grafi%c4%8dni-vmesniki">Dodatek A: Git v drugih okoljih</a></h2> <ol> <li> A1.1 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Grafi%c4%8dni-vmesniki">Grafični vmesniki</a> </li> <li> A1.2 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-Visual-Studio">Git v Visual Studio</a> </li> <li> A1.3 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-Visual-Studio-Code">Git v Visual Studio Code</a> </li> <li> A1.4 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-IntelliJ-/-PyCharm-/-WebStorm-/-PhpStorm-/-RubyMine">Git v IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine</a> </li> <li> A1.5 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-Sublime-Text">Git v Sublime Text</a> </li> <li> A1.6 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-Bashu">Git v Bashu</a> </li> <li> A1.7 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-Zsh">Git v Zsh</a> </li> <li> A1.8 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Git-v-Powershellu">Git v Powershellu</a> </li> <li> A1.9 <a href="/book/sl/v2/Dodatek-A:-Git-v-drugih-okoljih-Povzetek">Povzetek</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/sl/v2/Dodatek-B:-Vdelava-Gita-v-va%c5%a1o-aplikacijo-Git-v-ukazni-vrstici">Dodatek B: Vdelava Gita v vašo aplikacijo</a></h2> <ol> <li> A2.1 <a href="/book/sl/v2/Dodatek-B:-Vdelava-Gita-v-va%c5%a1o-aplikacijo-Git-v-ukazni-vrstici">Git v ukazni vrstici</a> </li> <li> A2.2 <a href="/book/sl/v2/Dodatek-B:-Vdelava-Gita-v-va%c5%a1o-aplikacijo-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/sl/v2/Dodatek-B:-Vdelava-Gita-v-va%c5%a1o-aplikacijo-JGit">JGit</a> </li> <li> A2.4 <a href="/book/sl/v2/Dodatek-B:-Vdelava-Gita-v-va%c5%a1o-aplikacijo-go-git">go-git</a> </li> <li> A2.5 <a href="/book/sl/v2/Dodatek-B:-Vdelava-Gita-v-va%c5%a1o-aplikacijo-Dulwich">Dulwich</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Nastavitev-in-konfiguracija">Dodatek C: Ukazi Git</a></h2> <ol> <li> A3.1 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Nastavitev-in-konfiguracija">Nastavitev in konfiguracija</a> </li> <li> A3.2 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Pridobivanje-in-ustvarjanje-projektov">Pridobivanje in ustvarjanje projektov</a> </li> <li> A3.3 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Osnove-posnetkov">Osnove posnetkov</a> </li> <li> A3.4 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Veje-in-zdru%c5%beevanje">Veje in združevanje</a> </li> <li> A3.5 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Deljenje-in-posodabljanje-projektov">Deljenje in posodabljanje projektov</a> </li> <li> A3.6 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Pregled-in-primerjava">Pregled in primerjava</a> </li> <li> A3.7 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Razhro%c5%a1%c4%8devanje">Razhroščevanje</a> </li> <li> A3.8 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Popravljanje">Popravljanje</a> </li> <li> A3.9 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-E-po%c5%a1ta">E-pošta</a> </li> <li> A3.10 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Zunanji-sistemi">Zunanji sistemi</a> </li> <li> A3.11 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Administracija">Administracija</a> </li> <li> A3.12 <a href="/book/sl/v2/Dodatek-C:-Ukazi-Git-Orodja-za-sisteme-napeljave">Orodja za sisteme napeljave</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 na strežniku - Protokoli</h1> <div> <p> Na tej točki bi morali znati narediti večino dnevnih opravil, za katera boste uporabljali Git. Vendar pa morate za kakršno koli sodelovanje v Gitu imeti oddaljeni repozitorij Git. Čeprav lahko tehnično potisnete in povlečete spremembe iz posameznih repozitorijev, se to odsvetuje, ker lahko precej enostavno zamešate, na čem se dela, če niste pazljivi. Poleg tega želite, da lahko vaši sodelavci dostopajo do repozitorija, tudi če je vaš računalnik brez povezave — imeti bolj zanesljiv skupni repozitorij je pogostokrat uporabno. Zato je želena metoda za sodelovanje z nekom nastaviti vmesni repozitorij, do katerega imata oba dostop ter potiskate in vlečete iz njega.</p><p>Poganjanje strežnika Git je precej enostavno. Prvo izberete, katere protokole želite, da z njimi strežnik komunicira. Prvi razdelek tega poglavja bo pokril protokole, ki so na voljo, ter prednosti in slabosti vsakega. Naslednji razdelek bo razložil nekatere tipične nastavitve z uporabo teh protokolov in kako pripravite svoj strežnik, da dela z njimi. Nazadnje bomo šli skozi nekaj možnosti gostovanja, če nimate težav z gostovanjem svoje kode na strežniku nekoga drugega in ne želite prestati težav nastavitev in vzdrževanja svojega lastnega strežnika.</p><p>Če nimate nobenega interesa poganjati vašega lastnega strežnika, lahko preskočite na zadnji razdelek poglavja, da vidite nekaj možnosti nastavitev gostujočega računa in se nato premaknete na naslednje poglavje, kjer bomo govorili o različnih podrobnostih dela v porazdeljenem okolju upravljanja izvorne kode.</p><p>Oddaljeni repozitorij je v splošnem <em>goli repozitorij</em> — repozitorij Git, ki nima delovnega direktorija. Ker je repozitorij uporabljen samo kot točka sodelovanja, ni razloga imeti posnetka izvlečenega na disk; gre samo za podatke Git. Najenostavnejše rečeno, goli repozitorij je vsebina vašega projektnega direktorija <code>.git</code> in nič drugega.</p> <h2 id="_protokoli">Protokoli</h2> <div class="paragraph"> <p>Git lahko uporablja štiri glavne protokole za prenos podatkov: Local, HTTP, Secure Shell (SSH) in Git. Tu bomo govorili, kaj so in katere osnovne okoliščine bi želeli (ali ne želeli) imeti, da jih uporabljate.</p> </div> <div class="sect3"> <h3 id="_lokalni_protokol">Lokalni protokol</h3> <div class="paragraph"> <p> Najosnovnejši je <em>lokalni protokol</em> (angl. <em>local</em>), kjer je oddaljeni repozitorij v drugem direktoriju na disku na istem gostitelju. To se uporablja pogostokrat, če imajo vsi v vaši ekipi dostop do deljenega datotečnega sistema, kot je priklop (angl. <em>mount</em>) <a href="https://en.wikipedia.org/wiki/Network_File_System" target="_blank" rel="noopener">NFS</a>, ali v manj verjetnem primeru, da se vsi prijavijo v isti računalnik. Zadnje ne bi bilo idealno, ker bi vse vaše instance repozitorija kode domovale na istem računalniku, kar naredi katastrofične izgube bolj verjetne.</p> </div> <div class="paragraph"> <p>Če imate deljeni priklopljeni datotečni sistem, potem lahko klonirate, potiskate in vlečete iz lokalnega datotečno osnovanega repozitorija. Da tako klonirate repozitorij ali ga dodate kot oddaljenega k obstoječemu projektu, uporabite pot do repozitorija kot URL. Na primer, da klonirate lokalni repozitorij, lahko poženete nekaj takega:</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>Ali pa lahko naredite to:</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 operira malenkost drugače, če izrecno določite <code>file://</code> na začetku URL-ja. Če določite samo pot, Git poskuša uporabiti trde povezave ali pa neposredno kopira datoteke, ki jih potrebuje. Če določite <code>file://</code>, Git požene proces, ki ga običajno uporablja za prenos datotek podatkov preko omrežja, kar je v splošnem veliko manj učinkovita metoda. Glavni razlog za določanje predpone <code>file://</code> je, da želite čisto kopijo repozitorija z izpuščenimi neznanimi referencami ali objekti — v splošnem po uvozu iz drugega sistema nadzora različic ali česa podobnega (glejte poglavje <a href="/book/sl/v2/ch00/ch10-git-internals">Notranjost Gita</a> za opravila vzdrževanja). Tu bomo uporabili običajno pot, saj je to skoraj vedno hitrejše.</p> </div> <div class="paragraph"> <p>Da dodate lokalni repozitorij obstoječemu projektu Git, lahko poženete nekaj takega:</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>Nato lahko potiskate ali vlečete iz te daljave preko vaše nove daljave imenovane <code>local_proj</code>, kot bi to naredili preko omrežja.</p> </div> <div class="sect4"> <h4 id="_prednosti">Prednosti</h4> <div class="paragraph"> <p>Prednosti datotečno osnovanih repozitorijev so, da so enostavni in da uporabljajo obstoječe pravice datotek in dostopa omrežja. Če že imate deljeni datotečni sistem, do katerega ima dostop celotna ekipa, je nastavitev repozitorija zelo enostavna. Prilepite golo kopijo repozitorija nekam, kjer ima vsakdo deljeni dostop in nastavite pravice pisanja/branja, kakor bi to naredili za katerikoli drugi deljeni direktorij. S tem namenom bomo v razdelku <a href="/book/sl/v2/ch00/_getting_git_on_a_server">Pridobitev Gita na strežniku</a> govorili, kako izvoziti golo kopijo repozitorija.</p> </div> <div class="paragraph"> <p>To je tudi dobra možnost za hitro prijetje dela iz delovnega repozitorija nekoga drugega. Če vi in vaš sodelavec delata na istem projektu in od vas želi, da nekaj pogledate, je pogon ukaza, kot je <code>git pull /home/john/project</code>, pogostokrat enostavnejši kot potiskanje na oddaljeni strežnik in da nato prenesete od tam.</p> </div> </div> <div class="sect4"> <h4 id="_slabosti">Slabosti</h4> <div class="paragraph"> <p>Slabosti te metode so, da je deljeni dostop v splošnem težje nastaviti in doseči iz več lokacij kot pa osnovni dostop omrežja. Če želite potisniti iz svojega prenosnika, ko ste doma, morate priklopiti oddaljeni disk, kar je lahko težko in počasno v primerjavi z dostopom na osnovi omrežja.</p> </div> <div class="paragraph"> <p>Pomembno je omeniti, da to ni nujno najhitrejša možnost, če uporabljate neke vrste deljeni priklop. Lokalni repozitorij je hiter samo, če imate hiter dostop do podatkov. Repozitorij na NFS je pogostokrat počasnejši kot repozitorij preko SSH na istem strežniku, kar omogoča Gitu, da poganja lokalne diske na vsakem sistemu.</p> </div> <div class="paragraph"> <p>In nazadnje, ta protokol ne ščiti repozitorija pred škodo po nesreči. Vsak uporabnik ima polni lupinski dostop do »oddaljenega« direktorija in nič jim ne preprečuje spremeniti ali odstraniti notranjih datotek Git ter poškodovati repozitorija.</p> </div> </div> </div> <div class="sect3"> <h3 id="_protokoli_http">Protokoli HTTP</h3> <div class="paragraph"> <p>Git lahko komunicira preko HTTP v dveh različnih načinih. Pred različico Git 1.6.6 je bil samo en način, da to lahko naredi, kar je bilo zelo enostavno in v splošnem samo za branje. V različici 1.6.6 je bil predstavljen nov pametni protokol, ki je vključeval, da je bil Git sposoben se pametno pogajati pri prenosu podatkov na podoben način, kakor to dela preko SSH. V zadnjih nekaj letih je ta novi protokol HTTP postal zelo popularen, saj je enostavnejši za uporabnika in pametnejši, kako komunicira. Novejša različica je pogostokrat omenjena kot protokol <em>Smart</em> HTTP in starejši način kot <em>Dumb</em> HTTP. Najprej bomo pokrili novejši protokol Smart HTTP.</p> </div> <div class="sect4"> <h4 id="_pametni_http">Pametni HTTP</h4> <div class="paragraph"> <p> Pametni oz. t. i. Smart protokol HTTP operira zelo podobno kot protokola SSH ali Git, vendar se poganja preko standardnih vrat HTTPS in lahko uporablja različne mehanizme overjanja HTTP, kar pomeni, da je enostavnejši na uporabniški strani kot SSH, saj lahko uporabite stvari, kot je osnovno overjanje z uporabniškim imenom in geslom namesto nastavljanja ključev SSH.</p> </div> <div class="paragraph"> <p>Verjetno je sedaj postal najpopularnejši način za uporabo Gita, saj je lahko nastavljen tako, da streže tako anonimno, kot je protokol <code>git://</code>, kot je tudi lahko potisnjen preko z overjanjem in šifriranjem, kakršen je protokol SSH. Namesto da morate za te stvari nastavljati različne URL-je, lahko sedaj uporabite en URL za oba. Če poskusite potisniti in repozitorij zahteva overjanje (kar bi običajno moral), strežnik lahko vpraša za uporabniško ime in geslo. Enako velja za bralni dostop.</p> </div> <div class="paragraph"> <p>V bistvu za storitve, kot je GitHub, je URL, ki ga uporabljate za ogled repozitorija na spletu (na primer <a href="https://github.com/schacon/simplegit" class="bare" target="_blank" rel="noopener">https://github.com/schacon/simplegit</a>), enak URL-ju, ki ga lahko uporabite za kloniranje in potiskanje, če imate dostop.</p> </div> </div> <div class="sect4"> <h4 id="_neumni_http">Neumni HTTP</h4> <div class="paragraph"> <p> Če se strežnik ne odzove s pametno storitvijo Git HTTP, se bo odjemalec Git poskušal vrniti k enostavnejšemu <em>neumnemu</em> (angl. <em>dumb</em>) protokolu HTTP. Neumni protokol pričakuje, da je goli repozitorij Git ponujen kot običajne datoteke s spletnega strežnika. Lepota neumnega protokola HTTP je enostavnost nastavitve. V osnovi je vse, kar morate narediti, dati goli repozitorij Git pod vaš vrhnji dokumentni direktorij HTTP in nastaviti določeno kljuko <code>post-update</code> ter ste zaključili (glejte razdelek <a href="/book/sl/v2/ch00/_git_hooks">Kljuke Git</a>). Na tej točki kdorkoli, ki lahko dostopa do spletnega strežnika, pod katerim ste dali repozitorij, lahko tudi klonira vaš repozitorij. Da omogočite bralni dostop do svojega repozitorija preko HTTP, naredite nekaj takega:</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>To je vse. Kljuka <code>post-update</code>, ki prihaja privzeto z Gitom, požene ustrezni ukaz (<code>git update-server-info</code>), da naredi prenašanje in kloniranje HTTP ustrezno delujoče. Ta ukaz se izvede, ko potisnete v ta repozitorij (morda preko SSH); nato lahko ostali ljudje klonirajo preko tega nekako takole:</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>V tem določenem primeru uporabljamo pot <code>/var/www/htdocs</code>, ki je pogosta za nastavitve Apache, vendar lahko uporabite katerikoli statični spletni strežnik — v njegovo pot samo podajte goli repozitorij. Podatki Git so ponujeni kot osnovne statične datoteke (za podrobnosti, kako točno je strežen, glejte poglavje <a href="/book/sl/v2/ch00/ch10-git-internals">Notranjost Gita</a>).</p> </div> <div class="paragraph"> <p>V splošnem bi izbrali, da se poganja bralno/pisalni strežnik s pametnim HTTP, ali pa imate datoteke enostavno dostopne samo za branje v neumnem načinu. Redko se poganja mešanica obeh storitev.</p> </div> </div> <div class="sect4"> <h4 id="_prednosti_2">Prednosti</h4> <div class="paragraph"> <p>Osredotočili se bomo na prednosti pametne verzije protokola HTTP.</p> </div> <div class="paragraph"> <p>Enostavnost enega URL-ja za vse tipe dostopov in da strežnik poziva samo, ko je potrebno overjanje, naredi stvari zelo enostavne za končnega uporabnika. Možnost overjanja z uporabniškim imenom in geslom je tudi velika prednost pred SSH, saj uporabnikom ni treba lokalno generirati ključev SSH in naložiti njihovih javnih ključev na strežnik, preden imajo lahko interakcijo z njim. Za manj zahtevne uporabnike ali uporabnike na sistemih, kjer je SSH manj pogost, je to glavna prednost uporabnosti. Protokol je tudi zelo hiter in učinkovit, podobno, kot je SSH.</p> </div> <div class="paragraph"> <p>Svoje repozitorije lahko ponudite preko HTTPS tudi samo za branje, kar pomeni, da lahko šifrirate vsebino prenosa; ali pa greste dalje in naredite, da odjemalci uporabljajo določene podpisane certifikate SSL.</p> </div> <div class="paragraph"> <p>Druga dobra stvar je, da sta HTTP in HTTPS tako pogosto uporabljena protokola, da so požarni zidovi podjetij pogostokrat nastavljeni, da omogočajo promet preko njunih vrat.</p> </div> </div> <div class="sect4"> <h4 id="_slabosti_2">Slabosti</h4> <div class="paragraph"> <p>Git je lahko na nekaterih strežnikih bolj zahtevno nastaviti preko HTTPS v primerjavi s SSH. Razen tega je zelo malo prednosti, ki jih imajo ostali protokoli pred pametnim protokolom HTTP za strežbo Gita.</p> </div> <div class="paragraph"> <p>Če uporabljate HTTP za overjeno potiskanje, je zagotavljanje vaših poverilnic včasih bolj komplicirano kot uporaba ključev preko SSH. Vendar na voljo je kar nekaj orodij predpomnjenja poverilnic, ki jih lahko uporabite, vključno s Keychain na sistemu macOS in Credential Manager na sistemu Windows, kar naredi to precej neboleče. Preberite razdelek <a href="/book/sl/v2/ch00/_credential_caching">Shramba poverilnic</a>, da si pogledate, kako nastaviti varno predpomnjenje gesel HTTP na vašem sistemu.</p> </div> </div> </div> <div class="sect3"> <h3 id="_protokol_ssh">Protokol SSH</h3> <div class="paragraph"> <p> Pogosti protokol prenosa, ko Git gostujete sami, je preko SSH. To je zato, ker je dostop SSH na strežnikih večinoma že nastavljen — in če ni, je to enostavno narediti. SSH je tudi overitveni omrežni protokol in, ker je vseprisoten, ga je v splošnem enostavno nastaviti in uporabljati.</p> </div> <div class="paragraph"> <p>Da klonirate repozitorij Git preko SSH, lahko določite <code>ssh://</code> URL takole:</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>Lahko pa uporabite kratko scp-podobno sintakso za protokol 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>V obeh primerih zgoraj, če ne določite neobveznega uporabnika, Git predpostavlja, da gre za uporabnika, ki je trenutno prijavljen.</p> </div> <div class="sect4"> <h4 id="_prednosti_3">Prednosti</h4> <div class="paragraph"> <p>Prednosti za uporabo SSH je mnogo. Najprej, SSH je relativno enostavno nastaviti — prikriti procesi SSH so pogosti, mnogi administratorji omrežij imajo z njimi izkušnje in mnoge distribucije OS so z njimi nastavljene ali pa imajo orodja za njihovo upravljanje. Naslednje, dostop preko SSH je varen — vsi poslani podatki so šifrirani in overjeni. Nazadnje, tako kot protokoli HTTPS, Git in lokalni protokol, je tudi SSH učinkovit, saj so podatki pred prenašanjem čim bolj kompaktni.</p> </div> </div> <div class="sect4"> <h4 id="_slabosti_3">Slabosti</h4> <div class="paragraph"> <p>Negativni pogled SSH-ja je, da ne podpira anonimnega dostopa do vašega repozitorija. Če uporabljate SSH, <em>morajo</em> imeti ljudje dostop do vaše naprave preko SSH, tudi samo v načinu za branje, kar SSH ne naredi ugodnega za odprtokodne projekte, kjer uporabniki želijo samo enostavno klonirati vaš repozitorij, da ga preučijo. Če ga uporabljate samo znotraj svojega omrežja podjetja, je SSH lahko edini protokol, s katerim se boste morali ukvarjati. Če želite dovoliti anonimen dostop samo za branje do svojih projektov in želite uporabljati tudi SSH, boste morali nastaviti SSH, da lahko potiskate preko njega, vendar nekaj drugega za druge, da lahko prenašajo.</p> </div> </div> </div> <div class="sect3"> <h3 id="_protokol_git">Protokol Git</h3> <div class="paragraph"> <p> Nazadnje je na voljo protokol Git. To je posebni prikriti proces, ki prihaja v paketu Git; posluša na namenskih vratih (9418), kar ponuja storitev podobno kot protokol SSH, vendar absolutno brez vsakršnega overjanja ali šifriranja. Da je lahko repozitorij postrežen preko protokola Git, morate ustvariti datoteko <code>git-daemon-export-ok</code> — prikriti proces ne bo stregel repozitorija brez te datoteke v njem — vendar razen tega ni nikakršne varnosti. Bodisi je repozitorij Git na voljo za vsakogar za kloniranje, ali pa sploh ni. To pomeni, da v splošnem ni nobenega potiskanja preko tega protokola. Lahko omogočite dostop potiskanja; vendar bo manjkalo overjanje, kar pomeni, da kdorkoli na internetu, ki najde URL vašega projekta, lahko potisne v ta projekt. Dovolj je reči, da je to redko.</p> </div> <div class="sect4"> <h4 id="_prednosti_4">Prednosti</h4> <div class="paragraph"> <p>Protokol Git je pogostokrat najhitrejši omrežni protokol, ki je na voljo. Če ponujate veliko prometa za javni projekt ali strežete zelo velik projekt, ki ne zahteva uporabniškega overjanja za dostop branja, je verjetno, da boste želeli nastaviti prikriti proces Git, da streže vaš projekt. Uporablja enak mehanizem prenosa podatkov kot protokol SSH, vendar brez režijskih stroškov šifriranja in overjanja.</p> </div> </div> <div class="sect4"> <h4 id="_slabosti_4">Slabosti</h4> <div class="paragraph"> <p>Zaradi pomanjkanja TLS ali druge kriptografije lahko kloniranje prek <code>git://</code> privede do ranljivosti za izvajanje poljubne kode, zato se mu izogibajte, razen če veste, kaj počnete.</p> </div> <div class="ulist"> <ul> <li> <p>Če zaženete <code>git clone git://example.com/project.git</code>, lahko napadalec, ki nadzoruje vaš usmerjevalnik, spremeni pred kratkim kloniran repozitorij in vanj vstavi zlonamerno kodo. Če nato prevedete/zaženete kodo, ki ste jo pravkar klonirali, bo izvedena tudi zlonamerna koda. Zaradi istega razloga se je treba izogibati tudi zagonu <code>git clone <a href="http://example.com/project.git" class="bare">http://example.com/project.git</a></code>.</p> </li> <li> <p>Zagon <code>git clone <a href="https://example.com/project.git" class="bare">https://example.com/project.git</a></code> nima take težave (razen če napadalec lahko poda certifikat TLS za example.com). Zagon <code>git clone <a href="mailto:git@example.com">git@example.com</a>:project.git</code> ima težavo samo, če sprejmete napačni prstni odtis SSH.</p> </li> </ul> </div> <div class="paragraph"> <p>Protokol Git tudi nima overjanja, torej lahko repozitorij klonira kdorkoli (čeprav je to pogosto prav tisto, kar želite). Poleg tega je najverjetneje najtežji protokol za nastavitev. Zahteva svoj prikriti proces, kar zahteva konfiguracijo <code>xinetd</code>, <code>systemd</code>, ali kaj podobnega, kar ni vedno preprosto. Prav tako zahteva dostop do požarnega zidu na vratih 9418, ki niso standardna vrata, ki jih požarni zidovi podjetij vedno dovoljujejo. Za velikimi požarnimi zidovi podjetij so ta neznana vrata pogosto blokirana.</p> </div> </div> </div> <div id="nav"><a href="/book/sl/v2/Veje-Git-Povzetek">prev</a> | <a href="/book/sl/v2/Git-na-strežniku-Pridobitev-Gita-na-strežniku">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