-
1. Erste Schritte
-
2. Git Grundlagen
-
3. Git Branching
- 3.1 Branches auf einen Blick
- 3.2 Einfaches Branching und Merging
- 3.3 Branch-Management
- 3.4 Branching-Workflows
- 3.5 Remote-Branches
- 3.6 Rebasing
- 3.7 Zusammenfassung
-
4. Git auf dem Server
- 4.1 Die Protokolle
- 4.2 Git auf einem Server einrichten
- 4.3 Erstellung eines SSH-Public-Keys
- 4.4 Einrichten des Servers
- 4.5 Git-Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Von Drittanbietern gehostete Optionen
- 4.10 Zusammenfassung
-
5. Verteiltes Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revisions-Auswahl
- 7.2 Interaktives Stagen
- 7.3 Stashen und Bereinigen
- 7.4 Deine Arbeit signieren
- 7.5 Suchen
- 7.6 Den Verlauf umschreiben
- 7.7 Reset entzaubert
- 7.8 Fortgeschrittenes Merging
- 7.9 Rerere
- 7.10 Debuggen mit Git
- 7.11 Submodule
- 7.12 Bundling
- 7.13 Replace (Ersetzen)
- 7.14 Anmeldeinformationen speichern
- 7.15 Zusammenfassung
-
8. Git einrichten
- 8.1 Git Konfiguration
- 8.2 Git-Attribute
- 8.3 Git Hooks
- 8.4 Beispiel für Git-forcierte Regeln
- 8.5 Zusammenfassung
-
9. Git und andere VCS-Systeme
- 9.1 Git als Client
- 9.2 Migration zu Git
- 9.3 Zusammenfassung
-
10. Git Interna
-
A1. Anhang A: Git in anderen Umgebungen
- A1.1 Grafische Schnittstellen
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git in Sublime Text
- A1.6 Git in Bash
- A1.7 Git in Zsh
- A1.8 Git in PowerShell
- A1.9 Zusammenfassung
-
A2. Anhang B: Git in deine Anwendungen einbetten
- A2.1 Die Git-Kommandozeile
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Anhang C: Git Kommandos
- A3.1 Setup und Konfiguration
- A3.2 Projekte importieren und erstellen
- A3.3 Einfache Snapshot-Funktionen
- A3.4 Branching und Merging
- A3.5 Projekte gemeinsam nutzen und aktualisieren
- A3.6 Kontrollieren und Vergleichen
- A3.7 Debugging
- A3.8 Patchen bzw. Fehlerkorrektur
- A3.9 E-mails
- A3.10 Externe Systeme
- A3.11 Administration
- A3.12 Basisbefehle
7.12 Git Tools - Bundling
Bundling
Wir haben zwar die üblichen Methoden zur Übertragung von Git-Daten über ein Netzwerk (HTTP, SSH usw.) behandelt, aber es gibt noch eine weitere Möglichkeit. Diese wird zwar nicht häufig verwendet, aber sie kann durchaus nützlich sein.
Git ist in der Lage, seine Daten in einer einzigen Datei zu „bündeln“.
Das kann in verschiedenen Situationen nützlich sein.
Vielleicht ist dein Netzwerk ausgefallen und du möchtest Änderungen an deine Mitstreiter senden.
Vielleicht arbeitest du irgendwo außerhalb deines Unternehmens und hast aus Sicherheitsgründen keinen Zugang zum Firmen-Netzwerk.
Möglicherweise ist deine Wireless-/Ethernet-Karte einfach kaputt.
Oder du hast im Moment keinen Zugang zu einem gemeinsamen Server. Du willst jemandem Updates per E-Mail schicken und keine 40 Commits per format-patch übertragen.
Hier kann die Funktion git bundle behilflich sein.
Der Befehl bundle packt alles, was normalerweise mit einem git push Befehl über die Leitung geschoben wird, in eine Binärdatei, die du an jemanden per E-Mail oder auf einem Flash-Laufwerk schicken kannst, um es dann in ein anderes Repository zu entpacken.
Lass uns ein einfaches Beispiel anschauen. Angenommen, du hast ein Repository mit zwei Commits:
$ git log
commit 9a466c572fe88b195efd356c3f2bbeccdb504102
Author: Scott Chacon <schacon@gmail.com>
Date: Wed Mar 10 07:34:10 2010 -0800
Second commit
commit b1ec3248f39900d2a406049d762aa68e9641be25
Author: Scott Chacon <schacon@gmail.com>
Date: Wed Mar 10 07:34:01 2010 -0800
First commit
Wenn du dieses Repository an jemanden schicken willst und du keinen Zugriff auf ein Repository hast, um es zu pushen, oder wenn du einfach keins einrichten willst, kannst du es mit git bundle create bündeln.
$ git bundle create repo.bundle HEAD master
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 441 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
Du hast jetzt eine Datei mit der Bezeichnung repo.bundle, die alle Daten enthält, die benötigt werden, um den master Branch des Repositorys neu zu erstellen.
Mit dem Kommando bundle musst du jede Referenz oder jeden spezifischen Bereich von Commits auflisten, die du einbeziehen möchtest.
Wenn du beabsichtigt, diese Datei irgendwo anders zu klonen, solltest du HEAD als Referenz hinzufügen, wie wir es hier getan haben.
Du kannst diese repo.bundle Datei per E-Mail an eine andere Person schicken oder sie auf einem USB-Laufwerk speichern und übergeben.
Nun nehmen wir an, dass du diese repo.bundle Datei erhalten hast und an dem Projekt mitarbeiten willst.
Du kannst die Binärdatei in ein Verzeichnis klonen, ähnlich wie du es von einer URL aus tun würdest.