CINXE.COM

Git - Einrichten des Servers

<!DOCTYPE html> <html lang="de"> <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 - Einrichten des Servers</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-Setting-Up-the-Server">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Server-qurmaq">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/GitHub-%d0%a3%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bd%d0%b0-%d0%be%d1%80%d0%b3%d0%b0%d0%bd%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-auf-dem-Server-Einrichten-des-Servers">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Git-en-el-Servidor-Configurando-el-servidor">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Git-sur-le-serveur-Mise-en-place-du-serveur">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%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e3%82%bb%e3%83%83%e3%83%88%e3%82%a2%e3%83%83%e3%83%97">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git-%ec%84%9c%eb%b2%84-%ec%84%9c%eb%b2%84-%ec%84%a4%ec%a0%95%ed%95%98%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-op-de-server-De-server-opzetten">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%9d%d0%b0%d1%81%d1%82%d1%80%d0%b0%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Git-na-stre%c5%beniku-Nastavitev-stre%c5%benika">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Git-sa-Server-Pag-Setup-ng-Server">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%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></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-%e9%85%8d%e7%bd%ae%e6%9c%8d%e5%8a%a1%e5%99%a8">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Git-na-serveru-Nastaven%c3%ad-serveru">Č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%d0%be%d1%81%d1%82%d0%b0%d0%b2%d1%83%d0%b2%d0%b0%d1%9a%d0%b5-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%be%d1%82">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Git-na-serwerze-Konfigurowanie-serwera">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%be%d0%b4%d0%b5%d1%88%d0%b0%d0%b2%d0%b0%d1%9a%d0%b5-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0">Српски</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-Setting-Up-the-Server">Ўзбекча</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-%e8%a8%ad%e5%ae%9a%e4%bc%ba%e6%9c%8d%e5%99%a8">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-on-the-Server-Setting-Up-the-Server">Беларуская</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%86%d8%b5%d8%a8-%d9%88-%d8%b1%d8%a7%d9%87%e2%80%8c%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d8%b3%d8%b1%d9%88%d8%b1" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-di-Server-Setting-Up-the-Server">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-on-the-Server-Setting-Up-the-Server">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-on-the-Server-Setting-Up-the-Server">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Git-no-servidor-Setting-Up-the-Server">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Git-no-Servidor-Setting-Up-the-Server">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-p%c3%a5-servern-Konvigurera-servern">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Sunucu-Kurma">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-de">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/de/v2/Erste-Schritte-Was-ist-Versionsverwaltung%3F">Erste Schritte</a></h2> <ol> <li> 1.1 <a href="/book/de/v2/Erste-Schritte-Was-ist-Versionsverwaltung%3F">Was ist Versionsverwaltung?</a> </li> <li> 1.2 <a href="/book/de/v2/Erste-Schritte-Kurzer-%c3%9cberblick-%c3%bcber-die-Historie-von-Git">Kurzer Überblick über die Historie von Git</a> </li> <li> 1.3 <a href="/book/de/v2/Erste-Schritte-Was-ist-Git%3F">Was ist Git?</a> </li> <li> 1.4 <a href="/book/de/v2/Erste-Schritte-Die-Kommandozeile">Die Kommandozeile</a> </li> <li> 1.5 <a href="/book/de/v2/Erste-Schritte-Git-installieren">Git installieren</a> </li> <li> 1.6 <a href="/book/de/v2/Erste-Schritte-Git-Basis-Konfiguration">Git Basis-Konfiguration</a> </li> <li> 1.7 <a href="/book/de/v2/Erste-Schritte-Hilfe-finden">Hilfe finden</a> </li> <li> 1.8 <a href="/book/de/v2/Erste-Schritte-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>2. <a href="/book/de/v2/Git-Grundlagen-Ein-Git-Repository-anlegen">Git Grundlagen</a></h2> <ol> <li> 2.1 <a href="/book/de/v2/Git-Grundlagen-Ein-Git-Repository-anlegen">Ein Git-Repository anlegen</a> </li> <li> 2.2 <a href="/book/de/v2/Git-Grundlagen-%c3%84nderungen-nachverfolgen-und-im-Repository-speichern">Änderungen nachverfolgen und im Repository speichern</a> </li> <li> 2.3 <a href="/book/de/v2/Git-Grundlagen-Anzeigen-der-Commit-Historie">Anzeigen der Commit-Historie</a> </li> <li> 2.4 <a href="/book/de/v2/Git-Grundlagen-Ungewollte-%c3%84nderungen-r%c3%bcckg%c3%a4ngig-machen">Ungewollte Änderungen rückgängig machen</a> </li> <li> 2.5 <a href="/book/de/v2/Git-Grundlagen-Mit-Remotes-arbeiten">Mit Remotes arbeiten</a> </li> <li> 2.6 <a href="/book/de/v2/Git-Grundlagen-Taggen">Taggen</a> </li> <li> 2.7 <a href="/book/de/v2/Git-Grundlagen-Git-Aliases">Git Aliases</a> </li> <li> 2.8 <a href="/book/de/v2/Git-Grundlagen-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>3. <a href="/book/de/v2/Git-Branching-Branches-auf-einen-Blick">Git Branching</a></h2> <ol> <li> 3.1 <a href="/book/de/v2/Git-Branching-Branches-auf-einen-Blick">Branches auf einen Blick</a> </li> <li> 3.2 <a href="/book/de/v2/Git-Branching-Einfaches-Branching-und-Merging">Einfaches Branching und Merging</a> </li> <li> 3.3 <a href="/book/de/v2/Git-Branching-Branch-Management">Branch-Management</a> </li> <li> 3.4 <a href="/book/de/v2/Git-Branching-Branching-Workflows">Branching-Workflows</a> </li> <li> 3.5 <a href="/book/de/v2/Git-Branching-Remote-Branches">Remote-Branches</a> </li> <li> 3.6 <a href="/book/de/v2/Git-Branching-Rebasing">Rebasing</a> </li> <li> 3.7 <a href="/book/de/v2/Git-Branching-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>4. <a href="/book/de/v2/Git-auf-dem-Server-Die-Protokolle">Git auf dem Server</a></h2> <ol> <li> 4.1 <a href="/book/de/v2/Git-auf-dem-Server-Die-Protokolle">Die Protokolle</a> </li> <li> 4.2 <a href="/book/de/v2/Git-auf-dem-Server-Git-auf-einem-Server-einrichten">Git auf einem Server einrichten</a> </li> <li> 4.3 <a href="/book/de/v2/Git-auf-dem-Server-Erstellung-eines-SSH-Public-Keys">Erstellung eines SSH-Public-Keys</a> </li> <li> 4.4 <a href="/book/de/v2/Git-auf-dem-Server-Einrichten-des-Servers" class="active">Einrichten des Servers</a> </li> <li> 4.5 <a href="/book/de/v2/Git-auf-dem-Server-Git-Daemon">Git-Daemon</a> </li> <li> 4.6 <a href="/book/de/v2/Git-auf-dem-Server-Smart-HTTP">Smart HTTP</a> </li> <li> 4.7 <a href="/book/de/v2/Git-auf-dem-Server-GitWeb">GitWeb</a> </li> <li> 4.8 <a href="/book/de/v2/Git-auf-dem-Server-GitLab">GitLab</a> </li> <li> 4.9 <a href="/book/de/v2/Git-auf-dem-Server-Von-Drittanbietern-gehostete-Optionen">Von Drittanbietern gehostete Optionen</a> </li> <li> 4.10 <a href="/book/de/v2/Git-auf-dem-Server-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>5. <a href="/book/de/v2/Verteiltes-Git-Verteilter-Arbeitsablauf">Verteiltes Git</a></h2> <ol> <li> 5.1 <a href="/book/de/v2/Verteiltes-Git-Verteilter-Arbeitsablauf">Verteilter Arbeitsablauf</a> </li> <li> 5.2 <a href="/book/de/v2/Verteiltes-Git-An-einem-Projekt-mitwirken">An einem Projekt mitwirken</a> </li> <li> 5.3 <a href="/book/de/v2/Verteiltes-Git-Ein-Projekt-verwalten">Ein Projekt verwalten</a> </li> <li> 5.4 <a href="/book/de/v2/Verteiltes-Git-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> </ol> </div> <div class='column-middle'> <ol class='book-toc'> <li class='chapter'> <h2>6. <a href="/book/de/v2/GitHub-Einrichten-und-Konfigurieren-eines-Kontos">GitHub</a></h2> <ol> <li> 6.1 <a href="/book/de/v2/GitHub-Einrichten-und-Konfigurieren-eines-Kontos">Einrichten und Konfigurieren eines Kontos</a> </li> <li> 6.2 <a href="/book/de/v2/GitHub-Mitwirken-an-einem-Projekt">Mitwirken an einem Projekt</a> </li> <li> 6.3 <a href="/book/de/v2/GitHub-Ein-Projekt-betreuen">Ein Projekt betreuen</a> </li> <li> 6.4 <a href="/book/de/v2/GitHub-Verwalten-einer-Organisation">Verwalten einer Organisation</a> </li> <li> 6.5 <a href="/book/de/v2/GitHub-Skripte-mit-GitHub">Skripte mit GitHub</a> </li> <li> 6.6 <a href="/book/de/v2/GitHub-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>7. <a href="/book/de/v2/Git-Tools-Revisions-Auswahl">Git Tools</a></h2> <ol> <li> 7.1 <a href="/book/de/v2/Git-Tools-Revisions-Auswahl">Revisions-Auswahl</a> </li> <li> 7.2 <a href="/book/de/v2/Git-Tools-Interaktives-Stagen">Interaktives Stagen</a> </li> <li> 7.3 <a href="/book/de/v2/Git-Tools-Stashen-und-Bereinigen">Stashen und Bereinigen</a> </li> <li> 7.4 <a href="/book/de/v2/Git-Tools-Deine-Arbeit-signieren">Deine Arbeit signieren</a> </li> <li> 7.5 <a href="/book/de/v2/Git-Tools-Suchen">Suchen</a> </li> <li> 7.6 <a href="/book/de/v2/Git-Tools-Den-Verlauf-umschreiben">Den Verlauf umschreiben</a> </li> <li> 7.7 <a href="/book/de/v2/Git-Tools-Reset-entzaubert">Reset entzaubert</a> </li> <li> 7.8 <a href="/book/de/v2/Git-Tools-Fortgeschrittenes-Merging">Fortgeschrittenes Merging</a> </li> <li> 7.9 <a href="/book/de/v2/Git-Tools-Rerere">Rerere</a> </li> <li> 7.10 <a href="/book/de/v2/Git-Tools-Debuggen-mit-Git">Debuggen mit Git</a> </li> <li> 7.11 <a href="/book/de/v2/Git-Tools-Submodule">Submodule</a> </li> <li> 7.12 <a href="/book/de/v2/Git-Tools-Bundling">Bundling</a> </li> <li> 7.13 <a href="/book/de/v2/Git-Tools-Replace-Ersetzen">Replace (Ersetzen)</a> </li> <li> 7.14 <a href="/book/de/v2/Git-Tools-Anmeldeinformationen-speichern">Anmeldeinformationen speichern</a> </li> <li> 7.15 <a href="/book/de/v2/Git-Tools-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>8. <a href="/book/de/v2/Git-einrichten-Git-Konfiguration">Git einrichten</a></h2> <ol> <li> 8.1 <a href="/book/de/v2/Git-einrichten-Git-Konfiguration">Git Konfiguration</a> </li> <li> 8.2 <a href="/book/de/v2/Git-einrichten-Git-Attribute">Git-Attribute</a> </li> <li> 8.3 <a href="/book/de/v2/Git-einrichten-Git-Hooks">Git Hooks</a> </li> <li> 8.4 <a href="/book/de/v2/Git-einrichten-Beispiel-f%c3%bcr-Git-forcierte-Regeln">Beispiel für Git-forcierte Regeln</a> </li> <li> 8.5 <a href="/book/de/v2/Git-einrichten-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>9. <a href="/book/de/v2/Git-und-andere-VCS-Systeme-Git-als-Client">Git und andere VCS-Systeme</a></h2> <ol> <li> 9.1 <a href="/book/de/v2/Git-und-andere-VCS-Systeme-Git-als-Client">Git als Client</a> </li> <li> 9.2 <a href="/book/de/v2/Git-und-andere-VCS-Systeme-Migration-zu-Git">Migration zu Git</a> </li> <li> 9.3 <a href="/book/de/v2/Git-und-andere-VCS-Systeme-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>10. <a href="/book/de/v2/Git-Interna-Basisbefehle-und-Standardbefehle-Plumbing-and-Porcelain">Git Interna</a></h2> <ol> <li> 10.1 <a href="/book/de/v2/Git-Interna-Basisbefehle-und-Standardbefehle-Plumbing-and-Porcelain">Basisbefehle und Standardbefehle (Plumbing and Porcelain)</a> </li> <li> 10.2 <a href="/book/de/v2/Git-Interna-Git-Objekte">Git Objekte</a> </li> <li> 10.3 <a href="/book/de/v2/Git-Interna-Git-Referenzen">Git Referenzen</a> </li> <li> 10.4 <a href="/book/de/v2/Git-Interna-Packdateien-engl-Packfiles">Packdateien (engl. Packfiles)</a> </li> <li> 10.5 <a href="/book/de/v2/Git-Interna-Die-Referenzspezifikation-engl-Refspec">Die Referenzspezifikation (engl. Refspec)</a> </li> <li> 10.6 <a href="/book/de/v2/Git-Interna-Transfer-Protokolle">Transfer Protokolle</a> </li> <li> 10.7 <a href="/book/de/v2/Git-Interna-Wartung-und-Datenwiederherstellung">Wartung und Datenwiederherstellung</a> </li> <li> 10.8 <a href="/book/de/v2/Git-Interna-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> </ol> </div> <div class='column-right'> <ol class='book-toc'> <li class='chapter'> <h2>A1. <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Grafische-Schnittstellen">Anhang A: Git in anderen Umgebungen</a></h2> <ol> <li> A1.1 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Grafische-Schnittstellen">Grafische Schnittstellen</a> </li> <li> A1.2 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-Visual-Studio">Git in Visual Studio</a> </li> <li> A1.3 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-Visual-Studio-Code">Git in Visual Studio Code</a> </li> <li> A1.4 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-IntelliJ-/-PyCharm-/-WebStorm-/-PhpStorm-/-RubyMine">Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine</a> </li> <li> A1.5 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-Sublime-Text">Git in Sublime Text</a> </li> <li> A1.6 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-Bash">Git in Bash</a> </li> <li> A1.7 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-Zsh">Git in Zsh</a> </li> <li> A1.8 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Git-in-PowerShell">Git in PowerShell</a> </li> <li> A1.9 <a href="/book/de/v2/Anhang-A:-Git-in-anderen-Umgebungen-Zusammenfassung">Zusammenfassung</a> </li> </ol> </li> <li class='chapter'> <h2>A2. <a href="/book/de/v2/Anhang-B:-Git-in-deine-Anwendungen-einbetten-Die-Git-Kommandozeile">Anhang B: Git in deine Anwendungen einbetten</a></h2> <ol> <li> A2.1 <a href="/book/de/v2/Anhang-B:-Git-in-deine-Anwendungen-einbetten-Die-Git-Kommandozeile">Die Git-Kommandozeile</a> </li> <li> A2.2 <a href="/book/de/v2/Anhang-B:-Git-in-deine-Anwendungen-einbetten-Libgit2">Libgit2</a> </li> <li> A2.3 <a href="/book/de/v2/Anhang-B:-Git-in-deine-Anwendungen-einbetten-JGit">JGit</a> </li> <li> A2.4 <a href="/book/de/v2/Anhang-B:-Git-in-deine-Anwendungen-einbetten-go-git">go-git</a> </li> <li> A2.5 <a href="/book/de/v2/Anhang-B:-Git-in-deine-Anwendungen-einbetten-Dulwich">Dulwich</a> </li> </ol> </li> <li class='chapter'> <h2>A3. <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Setup-und-Konfiguration">Anhang C: Git Kommandos</a></h2> <ol> <li> A3.1 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Setup-und-Konfiguration">Setup und Konfiguration</a> </li> <li> A3.2 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Projekte-importieren-und-erstellen">Projekte importieren und erstellen</a> </li> <li> A3.3 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Einfache-Snapshot-Funktionen">Einfache Snapshot-Funktionen</a> </li> <li> A3.4 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Branching-und-Merging">Branching und Merging</a> </li> <li> A3.5 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Projekte-gemeinsam-nutzen-und-aktualisieren">Projekte gemeinsam nutzen und aktualisieren</a> </li> <li> A3.6 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Kontrollieren-und-Vergleichen">Kontrollieren und Vergleichen</a> </li> <li> A3.7 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Debugging">Debugging</a> </li> <li> A3.8 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Patchen-bzw-Fehlerkorrektur">Patchen bzw. Fehlerkorrektur</a> </li> <li> A3.9 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-E-mails">E-mails</a> </li> <li> A3.10 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Externe-Systeme">Externe Systeme</a> </li> <li> A3.11 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Administration">Administration</a> </li> <li> A3.12 <a href="/book/de/v2/Anhang-C:-Git-Kommandos-Basisbefehle">Basisbefehle</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.4 Git auf dem Server - Einrichten des Servers</h1> <div> <h2 id="_setting_up_server">Einrichten des Servers</h2> <div class="paragraph"> <p>Lass uns nun durch die Einrichtung des SSH-Zugriffs auf der Serverseite gehen. In diesem Beispiel verwendest du die Methode <code>authorized_keys</code> zur Authentifizierung deiner Benutzer. Wir nehmen an, dass du eine Standard-Linux-Distribution wie Ubuntu verwendest.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Anmerkung</div> </td> <td class="content"> <div class="paragraph"> <p>Viele der hier beschriebenen Vorgänge können mit dem Befehl <code>ssh-copy-id</code> automatisiert werden, ohne dass öffentliche Schlüssel manuell kopiert und installiert werden müssen.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Zuerst erstellst du ein <code>git</code> Benutzerkonto und ein <code>.ssh</code> Verzeichnis für diesen Benutzer:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ sudo adduser git $ su git $ cd $ mkdir .ssh &amp;&amp; chmod 700 .ssh $ touch .ssh/authorized_keys &amp;&amp; chmod 600 .ssh/authorized_keys</code></pre> </div> </div> <div class="paragraph"> <p>Als nächstes mmusst du einige öffentliche SSH-Schlüssel für Entwickler zur <code>authorized_keys</code> Datei für den <code>git</code> User hinzufügen. Nehmen wir an, du hast einige vertrauenswürdige öffentliche Schlüssel und hast sie in temporären Dateien gespeichert. Auch hier sehen die öffentlichen Schlüssel in etwa so aus:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat /tmp/id_rsa.john.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq dAv8JggJICUvax2T9va5 gsg-keypair</code></pre> </div> </div> <div class="paragraph"> <p>Du fügst sie einfach an die Datei <code>authorized_keys</code> des <code>git</code> Benutzers in dessen <code>.ssh</code> Verzeichnis an:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat /tmp/id_rsa.john.pub &gt;&gt; ~/.ssh/authorized_keys $ cat /tmp/id_rsa.josie.pub &gt;&gt; ~/.ssh/authorized_keys $ cat /tmp/id_rsa.jessica.pub &gt;&gt; ~/.ssh/authorized_keys</code></pre> </div> </div> <div class="paragraph"> <p>Nun kannst du ein leeres Repository für sie einrichten, indem du <code>git init</code> mit der Option <code>--bare</code> ausführst, die das Repository ohne Arbeitsverzeichnis initialisiert:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cd /srv/git $ mkdir project.git $ cd project.git $ git init --bare Initialized empty Git repository in /srv/git/project.git/</code></pre> </div> </div> <div class="paragraph"> <p>Dann können John, Josie oder Jessica die erste Version ihres Projekts in dieses Repository pushen, indem sie es als Remote hinzufügen und dann einen Branch pushen. Beachte, dass jemand auf der Maschine eine Shell ausführen muss und jedes Mal, wenn du ein Projekt hinzufügen möchtest, ein Bare-Repository erstellen muss. Lass uns <code>gitserver</code> als Hostname für den Server verwenden, auf dem du deinen <code>git</code> Benutzer und dein Repository eingerichtet hast. Wenn du den Server in einem internen Netzwerk betreibst und DNS so einrichtest, dass <code>gitserver</code> auf diesen Server zeigt, dann kannst du folgende Befehle verwenden (vorausgesetzt, dass <code>myproject</code> ein bestehendes Git-Projekt ist):</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console"># on John's computer $ cd myproject $ git init $ git add . $ git commit -m 'Initial commit' $ git remote add origin git@gitserver:/srv/git/project.git $ git push origin master</code></pre> </div> </div> <div class="paragraph"> <p>Jetzt können die anderen es klonen und Änderungen genauso einfach wieder pushen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone git@gitserver:/srv/git/project.git $ cd project $ vim README $ git commit -am 'Fix for README file' $ git push origin master</code></pre> </div> </div> <div class="paragraph"> <p>Mit dieser Methode kannst du kurzfristig einen Read/Write Git-Server für eine Handvoll Entwickler in Betrieb nehmen.</p> </div> <div class="paragraph"> <p>Du solltest beachten, dass sich derzeit alle diese Benutzer auch am Server anmelden und eine Shell als <code>git</code> Benutzer erhalten können. Wenn du das einschränken willst, musst du die Shell zu etwas anderem in der Datei <code>/etc/passwd</code> ändern.</p> </div> <div class="paragraph"> <p>Du kannst das <code>git</code> Benutzerkonto mit einem in Git enthaltenen Shell-Tool mit dem Namen <code>git-shell</code> ganz einfach auf Git-bezogene Aktivitäten beschränken. Wenn du diese Option als Anmeldeshell des <code>git</code> Benutzerkontos festlegst, hat dieses Konto keinen normalen Shell-Zugriff auf deinen Server. Um das einzurichten, gib <code>git-shell</code> anstelle von <code>bash</code> oder <code>csh</code> für die Login-Shell dieses Kontos an. Um das zu erreichen, musst du zuerst den vollständigen Pfadnamen des <code>git-shell</code> Befehls zu <code>/etc/shells</code> hinzufügen, falls er nicht bereits vorhanden ist:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat /etc/shells # prüfe ob git-shell bereits vorhanden ist. Wenn nicht... $ which git-shell # prüfe, ob git-shell auf deinem System installiert ist. $ sudo -e /etc/shells # füge den pfad zu git-shell aus deinem letzten Kommando hinzu</code></pre> </div> </div> <div class="paragraph"> <p>Jetzt kannst du die Shell für einen Benutzer mit <code>chsh &lt;username&gt; -s &lt;shell&gt;</code> bearbeiten:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ sudo chsh git -s $(which git-shell)</code></pre> </div> </div> <div class="paragraph"> <p>Nun kann der <code>git</code> Benutzer die SSH-Verbindung weiterhin zum Pushen und Pullen von Git-Repositorys verwenden, aber sich sonst nicht mehr auf der Maschine bewegen. Wenn du es versuchst, siehst du eine entsprechende Meldung:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ ssh git@gitserver fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access. Connection to gitserver closed.</code></pre> </div> </div> <div class="paragraph"> <p>An dieser Stelle könnten Benutzer noch SSH-Portforwarding verwenden, um auf jeden Host zuzugreifen, den der Git-Server erreichen kann. Wenn du das verhindern möchtest, kannst du die Datei <code>authorized_keys</code> bearbeiten und jedem Schlüssel, den du einschränken möchtest, die folgenden Optionen voranstellen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty</code></pre> </div> </div> <div class="paragraph"> <p>Das Ergebnis sollte so aussehen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cat ~/.ssh/authorized_keys no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6h PB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541N YsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcC IicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBd LQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJ ICUvax2T9va5 gsg-keypair no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwENNMomTboYI+LJieaAY16qiXiH3wuvENhBG...</code></pre> </div> </div> <div class="paragraph"> <p>Jetzt funktionieren die Git-Netzwerkbefehle weiterhin einwandfrei, aber die Benutzer können keine Shell nutzen. Wie oben zu sehen, kannst du auch ein Verzeichnis im Home-Verzeichnis des <code>git</code> Benutzers einrichten, das den <code>git-shell</code> Befehl ein wenig anpasst. Du kannst beispielsweise die vom Server akzeptierten Git-Befehle einschränken oder die Nachricht anpassen, die Benutzer sehen, wenn sie versuchen, SSH auf diese Weise auszuführen. Führe <code>git help shell</code> aus, um weitere Informationen zum Anpassen der Shell zu erhalten.</p> </div> <div id="nav"><a href="/book/de/v2/Git-auf-dem-Server-Erstellung-eines-SSH-Public-Keys">prev</a> | <a href="/book/de/v2/Git-auf-dem-Server-Git-Daemon">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