CINXE.COM
Git - Git auf einem Server einrichten
<!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 - Git auf einem Server einrichten</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-Getting-Git-on-a-Server">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Server%e2%80%99d%c9%99-Git-Serverd%c9%99-Git-%c6%8fld%c9%99-Etm%c9%99k">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/GitHub-%d0%9a%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d1%8a%d1%82%d1%80%d1%83%d0%b4%d0%bd%d0%b8%d1%87%d0%b8%d0%bc-%d0%b2-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-auf-dem-Server-Git-auf-einem-Server-einrichten">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Git-en-el-Servidor-Configurando-Git-en-un-servidor">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Git-sur-le-serveur-Installation-de-Git-sur-un-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%e7%94%a8%e3%81%ae-Git-%e3%81%ae%e5%8f%96%e5%be%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%97%90-Git-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-op-de-server-Git-op-een-server-krijgen">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b5-%d0%a3%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-Git-%d0%bd%d0%b0-%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-Pridobitev-Gita-na-stre%c5%beniku">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Git-sa-Server-Pagkuha-ng-Git-sa-isang-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%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">Українська</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%9c%a8%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a%e6%90%ad%e5%bb%ba-Git">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Git-na-serveru-Zprovozn%c4%9bn%c3%ad-Gitu-na-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%94%d0%be%d0%b1%d0%b8%d0%b2%d0%b0%d1%9a%d0%b5-%d0%bd%d0%b0-Git-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Git-na-serwerze-Uruchomienie-Git-na-serwerze">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%d1%81%d1%82%d0%b0%d0%b2%d1%99%d0%b0%d1%9a%d0%b5-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%b0-%d0%93%d0%b8%d1%82-%d0%bd%d0%b0-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80">Српски</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-Getting-Git-on-a-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-%e5%9c%a8%e4%bc%ba%e6%9c%8d%e5%99%a8%e4%b8%8a%e4%bd%88%e7%bd%b2-Git">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-on-the-Server-Getting-Git-on-a-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-%d8%b1%d8%a7%d9%87%e2%80%8c%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%da%af%db%8c%d8%aa-%d8%af%d8%b1-%d8%b3%d8%b1%d9%88%d8%b1" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-di-Server-Getting-Git-on-a-Server">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-on-the-Server-Getting-Git-on-a-Server">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-on-the-Server-Getting-Git-on-a-Server">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Git-no-servidor-Getting-Git-on-a-Server">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/Git-no-Servidor-Getting-Git-on-a-Server">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Git-p%c3%a5-servern-Skaffa-Git-p%c3%a5-en-server">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Bir-Sunucuda-Git-Kurma-Bir-Sunucuda-Git-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" class="active">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">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.2 Git auf dem Server - Git auf einem Server einrichten</h1> <div> <h2 id="_getting_git_on_a_server">Git auf einem Server einrichten</h2> <div class="paragraph"> <p>Nun geht es darum, einen Git-Dienst einzurichten, der diese Protokolle auf deinem eigenen Server ausführt.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Anmerkung</div> </td> <td class="content"> <div class="paragraph"> <p>Hier zeigen wir dir die Befehle und Schritte, die für die grundlegende, vereinfachte Installation auf einem Linux-basierten Server erforderlich sind. Es ist jedoch auch möglich, diese Dienste auf macOS- oder Windows-Servern auszuführen. Die tatsächliche Einrichtung eines Produktionsservers innerhalb deiner Infrastruktur wird sicherlich Unterschiede in Bezug auf Sicherheitsmaßnahmen oder Betriebssystemwerkzeuge mit sich bringen. Hoffentlich gibt dir dies einen Überblick darüber, worum es geht.</p> </div> </td> </tr> </table> </div> <div class="paragraph"> <p>Um einen Git-Server einzurichten, musst du ein bestehendes Repository in ein neues Bare-Repository exportieren – ein Repository, das kein Arbeitsverzeichnis enthält. Das ist im Allgemeinen recht einfach zu realisieren. Um dein Repository zu klonen, um ein neues leeres Repository zu erstellen, führst du den Befehl clone mit der Option <code>--bare</code> aus. Normalerweise enden Bare-Repository-Verzeichnisnamen mit dem Suffix <code>.git</code>, wie hier:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone --bare my_project my_project.git Cloning into bare repository 'my_project.git'... done.</code></pre> </div> </div> <div class="paragraph"> <p>Du solltest nun eine Kopie der Git-Verzeichnisdaten in deinem <code>my_project.git</code> Verzeichnis haben.</p> </div> <div class="paragraph"> <p>Das ist in etwa das selbe wie:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cp -Rf my_project/.git my_project.git</code></pre> </div> </div> <div class="paragraph"> <p>Es gibt ein paar kleine Unterschiede in der Konfigurationsdatei, aber für deinen Zweck ist das fast dasselbe. Es übernimmt das Git-Repository allein, ohne Arbeitsverzeichnis, und erstellt daraus ein eigenes Verzeichnis.</p> </div> <div class="sect3"> <h3 id="_bare_repo">Das Bare-Repository auf einem Server ablegen</h3> <div class="paragraph"> <p>Jetzt, da du eine leere Kopie deines Repositorys hast, musst du es nur noch auf einen Server legen und die gewünschten Protokolle einrichten. Nehmen wir an, du hast einen Server mit der Bezeichnung <code>git.example.com</code> eingerichtet, auf dem du SSH-Zugriff hast und du möchtest alle deine Git-Repositorys unter dem Verzeichnis <code>/srv/git</code> ablegen. Angenommen, <code>/srv/git</code> existiert bereits auf diesem Server, dann kannst du dein neues Repository einrichten, indem du dein leeres Repository kopierst:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ scp -r my_project.git user@git.example.com:/srv/git</code></pre> </div> </div> <div class="paragraph"> <p>Ab diesem Zeitpunkt können andere Benutzer, die SSH-basierten Lesezugriff auf das Verzeichnis <code>/srv/git</code> auf diesem Server haben, dein Repository klonen, indem sie Folgendes ausführen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone user@git.example.com:/srv/git/my_project.git</code></pre> </div> </div> <div class="paragraph"> <p>Wenn sich ein Benutzer über SSH in einen Server einloggt und Schreibrechte auf das Verzeichnis <code>/srv/git/my_project.git</code> hat, hat er auch automatisch Push-Rechte.</p> </div> <div class="paragraph"> <p>Git fügt automatisch Schreibrechte für Gruppen zu einem Repository hinzu, wenn du den Befehl <code>git init</code> mit der Option <code>--shared</code> ausführst. Beachte, dass durch die Ausführung dieses Befehls keine Commits, Referenzen usw. im laufenden Prozess zerstört werden.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ ssh user@git.example.com $ cd /srv/git/my_project.git $ git init --bare --shared</code></pre> </div> </div> <div class="paragraph"> <p>Du siehst, wie einfach es ist, aus einem Git-Repository eine leere Version zu erstellen und diese auf einem Server zu platzieren, auf den du und deine Mitstreiter SSH-Zugriff haben. Jetzt seid ihr der Lage, am gleichen Projekt zusammenzuarbeiten.</p> </div> <div class="paragraph"> <p>Das ist auch schon alles ist, was zu tun ist, um einen brauchbaren Git-Server zu betreiben, auf den mehrere Personen Zugriff haben. Füge einfach SSH-fähige Konten auf einem Server hinzu und lege ein leeres Repository an einen Ort, auf das alle diese Benutzer Lese- und Schreibrechte haben. Ihr seid nun startklar – mehr ist nicht nötig.</p> </div> <div class="paragraph"> <p>In den nächsten Abschnitten erfährst du, wie du dieses Grundkonstrukt zu komplexeren Konfigurationen erweitern kannst. Das beinhaltet, dass man nicht für jeden Benutzer ein Benutzerkonto anlegen muss, öffentlichen Lesezugriff auf Repositorys hinzufügt und Web-UIs einrichtet und vieles mehr. Denke jedoch daran, dass zur Zusammenarbeit mit ein paar Personen bei einem privaten Projekt <em>nur</em> ein SSH-Server und ein Bare-Repository benötigt wird.</p> </div> </div> <div class="sect3"> <h3 id="_kleine_installationen">Kleine Installationen</h3> <div class="paragraph"> <p>Wenn Ihr ein kleines Team seid, die Git nur in einer kleinen Umgebung ausprobieren wollen und nur wenige Entwickler habt, kann es ganz einfach sein. Einer der kompliziertesten Aspekte bei der Einrichtung eines Git-Servers ist die Benutzerverwaltung. Wenn du möchtest, dass einige Repositorys für bestimmte Benutzer schreibgeschützt und für andere lesend und schreibend sind, können Zugriff und Berechtigungen etwas schwieriger zu realisieren sein.</p> </div> <div class="sect4"> <h4 id="_ssh_zugang">SSH-Zugang</h4> <div class="paragraph"> <p> Wenn du einen Server hast, auf dem alle deine Entwickler bereits SSH-Zugriff haben, ist es in der Regel am einfachsten, dort ein erstes Repository einzurichten. Du musst so gut wie keine zusätzlichen Einstellungen vornehmen, wie wir im letzten Abschnitt beschrieben haben. Wenn du komplexere Zugriffsberechtigungen für deine Repositorys benötigst, kannst du diese mit den normalen Dateisystemberechtigungen des Betriebssystems deines Servers verwalten.</p> </div> <div class="paragraph"> <p>Wenn du deine Repositorys auf einem Server platzieren möchtest, der nicht über Konten für alle Personen in deinem Team verfügt, denen du Schreibzugriff gewähren möchtest, musst du für sie einen SSH-Zugriff einrichten. Wir gehen davon aus, dass auf deinem Server bereits ein SSH-Server installiert ist und du auf diesen Server zugreifen kannst.</p> </div> <div class="paragraph"> <p>Es gibt einige Möglichkeiten, wie du jedem in deinem Team Zugang gewähren kannst. Die erste besteht darin, Konten für alle einzurichten, was unkompliziert ist, aber recht mühsam sein kann. Unter Umständen ist es ratsam, <code>adduser</code> (oder die mögliche Alternative <code>useradd</code>) nicht auszuführen und für jeden neuen Benutzer temporäre Passwörter festzulegen.</p> </div> <div class="paragraph"> <p>Eine zweite Möglichkeit besteht darin, ein einzelnes Git-Benutzerkonto auf der Maschine zu erstellen. Fordere anschließend jeden Benutzer, der Schreibrechte haben möchte auf, dir seinen öffentlichen SSH-Schlüssel zu senden. Diesen Schlüssel fügst du nun zur Datei <code>~/.ssh/authorized_keys</code> des neuen 'git' Kontos hinzu. Jetzt sollte jeder über das 'git' Konto auf die Maschine zugreifen können. Das hat keinen Einfluss auf die committeten Daten. Der SSH-Benutzer mit dem du dich anmeldest hat keinen Einfluss auf deine aufgezeichneten Commits.</p> </div> <div class="paragraph"> <p>Eine weitere Möglichkeit besteht darin, dass sich dein SSH-Server von einem LDAP-Server oder einer anderen zentralen Authentifizierungsquelle authentifiziert, den du möglicherweise bereits eingerichtet hast. Solange jeder Benutzer Shell-Zugriff auf die Maschine erhalten kann, sollte jeder denkbare SSH-Authentifizierungsmechanismus funktionieren.</p> </div> </div> </div> <div id="nav"><a href="/book/de/v2/Git-auf-dem-Server-Die-Protokolle">prev</a> | <a href="/book/de/v2/Git-auf-dem-Server-Erstellung-eines-SSH-Public-Keys">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>