CINXE.COM

Git - Mit Remotes arbeiten

<!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 - Mit Remotes arbeiten</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-Basics-Working-with-Remotes">English</a>. </p> <p> Full translation available in <table> <tr><td><a href="/book/az/v2/Git%e2%80%99in-%c6%8fsaslar%c4%b1-Uzaqdan-%c4%b0%c5%9fl%c9%99m%c9%99k">azərbaycan dili</a>,</td></tr> <tr><td><a href="/book/bg/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-%d0%bd%d0%b0-Git-%d0%a0%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%be%d1%82%d0%b4%d0%b0%d0%bb%d0%b5%d1%87%d0%b5%d0%bd%d0%b8-%d1%85%d1%80%d0%b0%d0%bd%d0%b8%d0%bb%d0%b8%d1%89%d0%b0">български език</a>,</td></tr> <tr><td><a href="/book/de/v2/Git-Grundlagen-Mit-Remotes-arbeiten">Deutsch</a>,</td></tr> <tr><td><a href="/book/es/v2/Fundamentos-de-Git-Trabajar-con-Remotos">Español</a>,</td></tr> <tr><td><a href="/book/fr/v2/Les-bases-de-Git-Travailler-avec-des-d%c3%a9p%c3%b4ts-distants">Français</a>,</td></tr> <tr><td><a href="/book/gr">Ελληνικά</a>,</td></tr> <tr><td><a href="/book/ja/v2/Git-%e3%81%ae%e5%9f%ba%e6%9c%ac-%e3%83%aa%e3%83%a2%e3%83%bc%e3%83%88%e3%81%a7%e3%81%ae%e4%bd%9c%e6%a5%ad">日本語</a>,</td></tr> <tr><td><a href="/book/ko/v2/Git%ec%9d%98-%ea%b8%b0%ec%b4%88-%eb%a6%ac%eb%aa%a8%ed%8a%b8-%ec%a0%80%ec%9e%a5%ec%86%8c">한국어</a>,</td></tr> <tr><td><a href="/book/nl/v2/Git-Basics-Werken-met-remotes">Nederlands</a>,</td></tr> <tr><td><a href="/book/ru/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d1%8b-Git-%d0%a0%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d1%83%d0%b4%d0%b0%d0%bb%d1%91%d0%bd%d0%bd%d1%8b%d0%bc%d0%b8-%d1%80%d0%b5%d0%bf%d0%be%d0%b7%d0%b8%d1%82%d0%be%d1%80%d0%b8%d1%8f%d0%bc%d0%b8">Русский</a>,</td></tr> <tr><td><a href="/book/sl/v2/Osnove-Git-Delo-z-daljavami">Slovenščina</a>,</td></tr> <tr><td><a href="/book/tl/v2/Mga-Pangunahing-Kaalaman-sa-Git-Paggawa-gamit-ang-mga-Remote">Tagalog</a>,</td></tr> <tr><td><a href="/book/uk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8-Git-%d0%92%d0%b7%d0%b0%d1%94%d0%bc%d0%be%d0%b4%d1%96%d1%8f-%d0%b7-%d0%b2%d1%96%d0%b4%d0%b4%d0%b0%d0%bb%d0%b5%d0%bd%d0%b8%d0%bc%d0%b8-%d1%81%d1%85%d0%be%d0%b2%d0%b8%d1%89%d0%b0%d0%bc%d0%b8">Українська</a></td></tr> <tr><td><a href="/book/zh/v2/Git-%e5%9f%ba%e7%a1%80-%e8%bf%9c%e7%a8%8b%e4%bb%93%e5%ba%93%e7%9a%84%e4%bd%bf%e7%94%a8">简体中文</a>,</td></tr> </table> </p> <p> Partial translations available in <table> <tr><td><a href="/book/cs/v2/Z%c3%a1klady-pr%c3%a1ce-se-syst%c3%a9mem-Git-Pr%c3%a1ce-se-vzd%c3%a1len%c3%bdmi-repozit%c3%a1%c5%99i">Čeština</a>,</td></tr> <tr><td><a href="/book/mk/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d0%b5-%d0%bd%d0%b0-Git-Working-with-Remotes">Македонски</a>,</td></tr> <tr><td><a href="/book/pl/v2/Podstawy-Gita-Praca-ze-zdalnym-repozytorium">Polski</a>,</td></tr> <tr><td><a href="/book/sr/v2/%d0%9e%d1%81%d0%bd%d0%be%d0%b2%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%a0%d0%b0%d0%b4-%d1%81%d0%b0-%d1%83%d0%b4%d0%b0%d1%99%d0%b5%d0%bd%d0%b8%d0%bc-%d1%80%d0%b5%d0%bf%d0%be%d0%b7%d0%b8%d1%82%d0%be%d1%80%d0%b8%d1%98%d1%83%d0%bc%d0%b8%d0%bc%d0%b0">Српски</a>,</td></tr> <tr><td><a href="/book/uz/v2/Git-%d0%b0%d1%81%d0%be%d1%81%d0%bb%d0%b0%d1%80%d0%b8-%d0%a3%d0%b7%d0%be%d2%9b-%d0%bc%d0%b0%d1%81%d0%be%d1%84%d0%b0%d0%b4%d0%b0%d0%b3%d0%b8-%d0%be%d0%bc%d0%b1%d0%be%d1%80%d0%bb%d0%b0%d1%80-%d0%b1%d0%b8%d0%bb%d0%b0%d0%bd-%d0%b8%d1%88%d0%bb%d0%b0%d1%88">Ўзбекча</a>,</td></tr> <tr><td><a href="/book/zh-tw/v2/Git-%e5%9f%ba%e7%a4%8e-%e8%88%87%e9%81%a0%e7%ab%af%e5%8d%94%e5%90%8c%e5%b7%a5%e4%bd%9c">繁體中文</a>,</td></tr> </table> </p> <p> Translations started for <table> <tr><td><a href="/book/be/v2/Git-Basics-Working-with-Remotes">Беларуская</a>,</td></tr> <tr><td><a href="/book/fa/v2/%d9%85%d9%82%d8%af%d9%85%d8%a7%d8%aa-%da%af%db%8c%d8%aa-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%b1%db%8c%d9%85%d9%88%d8%aa%e2%80%8c%d9%87%d8%a7" dir="rtl">فارسی</a>,</td></tr> <tr><td><a href="/book/id/v2/Git-Basics-Working-with-Remotes">Indonesian</a>,</td></tr> <tr><td><a href="/book/it/v2/Git-Basics-Working-with-Remotes">Italiano</a>,</td></tr> <tr><td><a href="/book/ms/v2/Git-Basics-Working-with-Remotes">Bahasa Melayu</a>,</td></tr> <tr><td><a href="/book/pt-br/v2/Fundamentos-de-Git-Trabalhando-de-Forma-Remota">Português (Brasil)</a>,</td></tr> <tr><td><a href="/book/pt-pt/v2/No%c3%a7%c3%b5es-B%c3%a1sicas-do-Git-Working-with-Remotes">Português (Portugal)</a>,</td></tr> <tr><td><a href="/book/sv/v2/Grunder-i-Git-Jobba-med-fj%c3%a4rrf%c3%b6rvar">Svenska</a>,</td></tr> <tr><td><a href="/book/tr/v2/Git-Temelleri-Uzak-Repo-ile-%c3%87al%c4%b1%c5%9fmak">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" class="active">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">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>2.5 Git Grundlagen - Mit Remotes arbeiten</h1> <div> <h2 id="_remote_repos">Mit Remotes arbeiten</h2> <div class="paragraph"> <p>Um an Git-Projekte mitarbeiten zu können, musst du wissen, wie du deine Remote-Repositorys verwalten kannst. Remote-Repositorys sind Versionen deines Projekts, die im Internet oder im Netzwerk irgendwo gehostet werden. Du kannst Mehrere davon haben, von denen jedes in der Regel entweder schreibgeschützt oder beschreibbar ist. Die Zusammenarbeit mit Anderen erfordert die Verwaltung dieser Remote-Repositorys sowie das Pushing und Pulling von Daten zu und von den Repositorys, wenn du deine Arbeit teilen möchtest. Die Verwaltung von Remote-Repositorys umfasst das Wissen, wie man entfernte Repositorys hinzufügt, nicht mehr gültige Remotes entfernt, verschiedene Remote-Branches verwaltet, sie als versioniert oder nicht versioniert definiert und vieles mehr. In diesem Abschnitt werden wir einige dieser Remote-Management-Fertigkeiten erörtern.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Anmerkung</div> </td> <td class="content"> <div class="title">Remote-Repositorys können auch auf deinem lokalen Rechner liegen.</div> <div class="paragraph"> <p>Es ist durchaus möglich, dass du mit einem „entfernten“ Repository arbeiten kannst, das sich eigentlich auf demselben Host befindet auf dem du gerade arbeitest. Das Wort „remote“ bedeutet nicht unbedingt, dass sich das Repository an einem anderen Ort im Netzwerk oder Internet befindet, sondern nur, dass es an einem anderen Ort liegt. Die Arbeit mit einem solchen entfernten Repository würde immer noch alle üblichen Push-, Pull- und Fetch-Operationen einschließen, wie bei jedem anderen Remote-Repository.</p> </div> </td> </tr> </table> </div> <div class="sect3"> <h3 id="_auflisten_der_remotes">Auflisten der Remotes</h3> <div class="paragraph"> <p>Um zu sehen, welche Remote-Server bei dir konfiguriert sind, kannst du den Befehl <code>git remote</code> aufrufen. Er listet die Kurznamen der einzelnen von dir festgelegten Remote-Handles auf. Wenn du dein Repository geklont hast, solltest du zumindest <code>origin</code> sehen – das ist der Standardname, den Git dem Server gibt, von dem du geklont hast:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git clone https://github.com/schacon/ticgit Cloning into 'ticgit'... remote: Reusing existing pack: 1857, done. remote: Total 1857 (delta 0), reused 0 (delta 0) Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. $ cd ticgit $ git remote origin</code></pre> </div> </div> <div class="paragraph"> <p>Du kannst zusätzlich auch <code>-v</code> angeben, das dir die URLs anzeigt, die Git für den Kurznamen gespeichert hat, um beim Lesen und Schreiben auf diesen Remote zuzugreifen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push)</code></pre> </div> </div> <div class="paragraph"> <p>Wenn du mehr als einen Remote hast, listet der Befehl sie alle auf. Ein Repository mit mehreren Remotes für die Arbeit mit mehreren Beteiligten könnte beispielsweise so aussehen.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ cd grit $ git remote -v bakkdoor https://github.com/bakkdoor/grit (fetch) bakkdoor https://github.com/bakkdoor/grit (push) cho45 https://github.com/cho45/grit (fetch) cho45 https://github.com/cho45/grit (push) defunkt https://github.com/defunkt/grit (fetch) defunkt https://github.com/defunkt/grit (push) koke git://github.com/koke/grit.git (fetch) koke git://github.com/koke/grit.git (push) origin git@github.com:mojombo/grit.git (fetch) origin git@github.com:mojombo/grit.git (push)</code></pre> </div> </div> <div class="paragraph"> <p>Das bedeutet, dass wir Beiträge von jedem dieser Benutzer ziemlich einfach abrufen können. Möglicherweise haben wir zusätzlich die Erlaubnis, auf einen oder mehrere von diesen zu pushen, obwohl wir das hier nicht erkennen können.</p> </div> <div class="paragraph"> <p>Beachte: Diese Remotes verwenden unterschiedliche Protokollen; wir werden mehr darüber hier erfahren: <a href="/book/de/v2/ch00/_getting_git_on_a_server">Git auf einem Server installieren</a>.</p> </div> </div> <div class="sect3"> <h3 id="_hinzufügen_von_remote_repositorys">Hinzufügen von Remote-Repositorys</h3> <div class="paragraph"> <p>Wir haben bereits erwähnt und einige Beispiele gezeigt, wie der Befehl <code>git clone</code> stillschweigend den Remote <code>origin</code> hinzufügt. Im Folgendem beschreiben wir, wie du einen neuen Remote hinzufügen kannst. Um ein neues Remote-Git-Repository als Kurzname hinzuzufügen, auf das du verweisen kannst, führe <code>git remote add &lt;shortname&gt; &lt;url&gt;</code> aus:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote origin $ git remote add pb https://github.com/paulboone/ticgit $ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push) pb https://github.com/paulboone/ticgit (fetch) pb https://github.com/paulboone/ticgit (push)</code></pre> </div> </div> <div class="paragraph"> <p>Nun kannst du die Zeichenfolge <code>pb</code> auf der Kommandozeile anstelle der gesamten URL verwenden. Wenn du beispielsweise alle Informationen fetchen möchtest, die Paul hat, die aber noch nicht in deinem Repository enthalten sind, kannst du <code>git fetch pb</code> ausführen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git fetch pb remote: Counting objects: 43, done. remote: Compressing objects: 100% (36/36), done. remote: Total 43 (delta 10), reused 31 (delta 5) Unpacking objects: 100% (43/43), done. From https://github.com/paulboone/ticgit * [new branch] master -&gt; pb/master * [new branch] ticgit -&gt; pb/ticgit</code></pre> </div> </div> <div class="paragraph"> <p>Pauls <code>master</code> Branch ist nun lokal als <code>pb/master</code> erreichbar – Du kannst ihn in eine deiner Branches mergen oder ihn in einen lokalen Branch auschecken, wenn du ihn inspizieren möchten. Wir werden in <a href="/book/de/v2/ch00/ch03-git-branching">Git Branching</a> detailliert beschreiben, was Branches sind und wie man sie nutzt.</p> </div> </div> <div class="sect3"> <h3 id="_fetching_and_pulling">Fetchen und Pullen deiner Remotes</h3> <div class="paragraph"> <p>Wie du gerade gesehen hast, kannst du Daten aus deinem Remote-Projekt abrufen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git fetch &lt;remote&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Der Befehl geht an das Remote-Projekt und zieht (engl. pull) alle Daten von diesem Remote-Projekt, die du noch nicht hast. Danach solltest du Referenzen auf alle Branches dieses Remote haben, die du jederzeit mergen oder inspizieren kannst.</p> </div> <div class="paragraph"> <p>Wenn du ein Repository klonst, fügt der Befehl dieses entfernte Repository automatisch unter dem Namen „origin“ hinzu. So holt <code>git fetch origin</code> alle Änderungen, die seit dem Klonen (oder dem letzten Abholen) auf diesen Server abgelegt (engl. pushed) wurden. Es ist jedoch wichtig zu beachten, dass der Befehl <code>git fetch</code> nur die Daten in dein lokales Repository herunterlädt – er merged sie nicht automatisch mit deiner Arbeit zusammen oder ändert das, woran du gerade arbeitest. Du musst das Ganze manuell mit deiner Arbeit zusammenführen, wenn du soweit bist.</p> </div> <div class="paragraph"> <p>Wenn dein aktueller Branch so eingerichtet ist, dass er einen entfernten Branch verfolgt (engl. tracking), kannst du den Befehl <code>git pull</code> verwenden, um diesen entfernten Branch automatisch zu fetchen und dann mit deinem aktuellen Branch zu mergen (siehe den nächsten Abschnitt und <a href="/book/de/v2/ch00/ch03-git-branching">Git Branching</a> für weitere Informationen). Das könnte ein einfacherer oder komfortablerer Workflow sein. Standardmäßig richtet der Befehl <code>git clone</code> deinen lokalen <code>master</code> Branch automatisch so ein, dass er den entfernten <code>master</code> Branch (oder wie auch immer der Standard-Branch genannt wird) auf dem Server versioniert von dem du geklont hast. Wenn du <code>git pull</code> ausführst, werden normalerweise Daten von dem Server abgerufen, von dem du ursprünglich geklont hast. Anschliessend wird automatisch versucht diese Daten in deinem Code zu mergen.</p> </div> <div class="admonitionblock note"> <table> <tr> <td class="icon"> <div class="title">Anmerkung</div> </td> <td class="content"> <div class="paragraph"> <p>Ab der Version 2.27 von Git wird <code>git pull</code> eine Warnung ausgeben, wenn die Variable <code>pull.rebase</code> nicht gesetzt ist. Git wird dich so lange warnen, bis du die Variable setzt.</p> </div> <div class="paragraph"> <p>Falls du das Standardverhalten (möglichst ein fast-forward, ansonsten einen Merge-Commit erstellen) von Git beibehalten willst: <code>git config --global pull.rebase "false"</code></p> </div> <div class="paragraph"> <p>Wenn du jedoch mit dem Pullen einen Rebase machen willst: <code>git config --global pull.rebase "true"</code></p> </div> </td> </tr> </table> </div> </div> <div class="sect3"> <h3 id="_pushing_remotes">Zu deinen Remotes Pushen</h3> <div class="paragraph"> <p>Wenn du dein Projekt an einem Punkt hast, an dem du es teilen möchtest, können wir es zum Upstream verschieben (engl. pushen). Der Befehl dafür lautet: <code>git push &lt;remote&gt; &lt;branch&gt;</code>. Wenn du deinen <code>master</code> Branch auf den <code>origin</code> Server pushen möchtest (Zur Erinnerung: das Klonen richtet im Regelfall diese beiden Branches automatisch ein), dann kannst du diesen Befehl auch nutzen, um alle Commits, die du durchgeführt hast, auf den Server zu pushen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git push origin master</code></pre> </div> </div> <div class="paragraph"> <p>Dieser Befehl funktioniert allerdings nur, wenn du von einem Server geklont hast, auf den du Schreibzugriff hast und wenn in der Zwischenzeit noch niemand anderes gepusht hat. Wenn du und ein anderer Benutzer gleichzeitig klonen und beide Upstream pushen wollen, du aber etwas später nach Upstream pushst, dann wird dein Push zu Recht abgelehnt. Du musst zuerst dessen Bearbeitung abholen und in deine einbinden, bevor du pushen kannst. Siehe Kapitel 3 <a href="/book/de/v2/ch00/ch03-git-branching">Git Branching</a> mit ausführlicheren Details zum Pushen auf Remote-Server.</p> </div> </div> <div class="sect3"> <h3 id="_inspecting_remote">Inspizieren eines Remotes</h3> <div class="paragraph"> <p>Wenn du mehr Informationen über einen bestimmten Remote sehen möchten, kannst du den Befehl <code>git remote show &lt;remote&gt;</code> verwenden. Wenn du diesen Befehl mit einem remote Kurznamen ausführen, wie z.B. <code>origin</code>, erhältst du bspw. folgende Meldung:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote show origin * remote origin Fetch URL: https://github.com/schacon/ticgit Push URL: https://github.com/schacon/ticgit HEAD branch: master Remote branches: master tracked dev-branch tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date)</code></pre> </div> </div> <div class="paragraph"> <p>Er listet die URL für das Remote-Repository sowie die Informationen zu den Tracking-Branches auf. Der Befehl teilt dir mit: Wenn du dich im Master-Branch befindest und <code>git pull</code> ausführst, der <code>master</code> Branch des remotes nach dem abrufen (engl. fetched) automatisch mit dem lokalen Branch gemerged wird. Er listet auch alle Remote-Referenzen auf, die er abgerufen hat.</p> </div> <div class="paragraph"> <p>Das ist nur ein einfaches Beispiel, auf das du möglicherweise treffen wirst. Wenn du Git hingegen intensiver verwendest, könnte die <code>git remote show</code> Ausgabe wesentlich umfangreicher sein:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote show origin * remote origin URL: https://github.com/my-org/complex-project Fetch URL: https://github.com/my-org/complex-project Push URL: https://github.com/my-org/complex-project HEAD branch: master Remote branches: master tracked dev-branch tracked markdown-strip tracked issue-43 new (next fetch will store in remotes/origin) issue-45 new (next fetch will store in remotes/origin) refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove) Local branches configured for 'git pull': dev-branch merges with remote dev-branch master merges with remote master Local refs configured for 'git push': dev-branch pushes to dev-branch (up to date) markdown-strip pushes to markdown-strip (up to date) master pushes to master (up to date)</code></pre> </div> </div> <div class="paragraph"> <p>Dieser Befehl zeigt an, zu welchem Branch automatisch gepusht wird, wenn du <code>git push</code> ausführst, während du dich in bestimmten Branches befindest. Er zeigt dir auch, welche entfernten Branches auf dem Server vorhanden sind, die du noch nicht hast, welche entfernten Branches du hast, die aber vom Server gelöscht wurden und die lokalen Branches, die automatisch mit deinen Remote-Tracking-Branch zusammengeführt (gemerged) werden können, wenn du <code>git pull</code> ausführst.</p> </div> </div> <div class="sect3"> <h3 id="_umbenennen_und_entfernen_von_remotes">Umbenennen und Entfernen von Remotes</h3> <div class="paragraph"> <p>Du kannst <code>git remote rename</code> ausführen, um den Kurznamen eines Remotes zu ändern. Wenn du beispielsweise <code>pb</code> in <code>paul</code> umbenennen möchtest, kannst du dies mit dem Befehl <code>git remote rename</code> erreichen:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote rename pb paul $ git remote origin paul</code></pre> </div> </div> <div class="paragraph"> <p>Es ist zu beachten, dass dadurch auch alle deine Remote-Tracking-Branchnamen geändert werden. Was vorher unter <code>pb/master</code> referenziert wurde, ist jetzt unter <code>paul/master</code> zu finden.</p> </div> <div class="paragraph"> <p>Wenn du einen Remote aus irgendwelchen Gründen entfernen möchten – Du hast den Server verschoben oder verwendest einen bestimmten Mirror nicht länger oder ein Beitragender ist nicht mehr dabei – dann kannst du entweder <code>git remote remove</code> oder <code>git remote rm</code> verwenden:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-console" data-lang="console">$ git remote remove paul $ git remote origin</code></pre> </div> </div> <div class="paragraph"> <p>Sobald du die Referenz auf einen Remote auf diese Weise gelöscht hast, werden auch alle mit diesem Remote verbundenen Remote-Tracking-Branches und Konfigurationseinstellungen gelöscht.</p> </div> </div> <div id="nav"><a href="/book/de/v2/Git-Grundlagen-Ungewollte-Änderungen-rückgängig-machen">prev</a> | <a href="/book/de/v2/Git-Grundlagen-Taggen">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