-
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
A3.3 Anhang C: Git Kommandos - Einfache Snapshot-Funktionen
Einfache Snapshot-Funktionen
Für den grundlegenden Workflow der Erstellung von Inhalten und dem Committen in Ihren Verlauf gibt es nur wenige einfache Befehle.
git add
Der git add
Befehl fügt, für den nächsten Commit, Inhalte aus dem Arbeitsverzeichnis der Staging-Area (bzw. „Index“) hinzu.
Bei der Ausführung des Befehls git commit
wird standardmäßig nur diese Staging-Area betrachtet, so dass mit git add
festgelegt wird, wie Ihr nächster Commit-Schnappschuss aussehen soll.
Dieser Befehl ist ein unglaublich wichtiges Kommando in Git und wird in diesem Buch mehrfach erwähnt oder verwendet. Wir werden kurz auf einige der einzigartigen Verwendungen eingehen, die es gibt.
Wir stellen git add
zunächst in Neue Dateien zur Versionsverwaltung hinzufügen vor und beschreiben ihn ausführlich.
Wir besprechen in Einfache Merge-Konflikte, wie man damit Konflikte beim Mergen löst.
Wir fahren in Interaktives Stagen damit fort, bestimmte Teile einer modifizierten Datei interaktiv zur Staging-Area hinzuzufügen.
Schließlich emulieren wir ihn in Baum Objekte auf einem unteren Level, so dass Sie sich vorstellen können, was er im Hintergrund bewirkt.
git status
Der git status
Befehl wird Ihnen die verschiedenen Dateizustände in Ihrem Arbeitsverzeichnis und der Staging-Area anzeigen.
Er zeigt welche Dateien modifiziert und nicht bereitgestellt und welche bereitgestellt (eng. staged), aber noch nicht committet sind.
In seiner üblichen Form werden Ihnen auch einige grundlegende Tipps gegeben, wie Sie Dateien zwischen diesen Stufen verschieben können.
Wir behandeln status
zunächst in Zustand von Dateien prüfen, sowohl in seinen grundlegenden als auch in seinen kompakten Formen.
Im Buch wird so ziemlich alles angesprochen, was man mit dem Befehl git status
machen kann.
git diff
Der git diff
Befehl wird verwendet, wenn Sie Unterschiede zwischen zwei beliebigen Bäumen feststellen möchten.
Das könnte der Unterschied zwischen Ihrer Arbeitsumgebung und Ihrer Staging-Area (git diff
an sich), zwischen Ihrer Staging-Area und Ihrem letzten Commit (git diff --staged
) oder zwischen zwei Commits (git diff master branchB
) sein.
In Überprüfen der Staged- und Unstaged-Änderungen betrachten wir zunächst die grundsätzliche Anwendung von git diff
und zeigen dort, wie man feststellen kann, welche Änderungen bereits der Staging-Area hinzugefügt wurden und welche noch nicht.
Wir verwenden ihn mit der Option --check
in Richtlinien zur Zusammenführung (engl. Commits), um nach möglichen Leerzeichen-Problemen zu suchen, bevor wir committen.
Wir sehen, wie man die Unterschiede zwischen Branches mit der Syntax git diff A…B
in Bestimmen, was übernommen wird effektiver überprüfen kann.
Wir verwenden ihn, um Leerzeichen-Differenzen mit -b
herauszufiltern und wie man verschiedene Stufen von Konfliktdateien mit --theirs
, --ours
und --base
in Fortgeschrittenes Merging vergleicht.
Zuletzt verwenden wir ihn, um Submodul-Änderungen effektiv mit --submodule
in Erste Schritte mit Submodulen zu vergleichen.
git difftool
Der Befehl git difftool
startet ein externes Tool, um Ihnen den Unterschied zwischen zwei Bäumen zu zeigen, falls Sie einen anderen Befehl als das eingebaute git diff
bevorzugen.
Das erwähnen wir nur kurz in Überprüfen der Staged- und Unstaged-Änderungen.
git commit
Der git commit
Befehl erfasst alle Dateiinhalte, die mit git add
zur Staging-Area hinzugefügt wurden und speichert einen neuen permanenten Schnappschuss in der Datenbank. Anschließend bewegt er den Branch-Pointer der aktuellen Branch zu diesem hinauf.
Wir erklären zunächst die Grundlagen des Commitings in Die Änderungen committen.
Dort zeigen wir auch, wie man mit dem -a
Flag den Schritt git add
im täglichen Arbeitsablauf überspringt und wie man mit dem -m
Flag eine Commit-Meldung in der Kommandozeile übergibt, anstatt einen Editor zu starten.
In Ungewollte Änderungen rückgängig machen befassen wir uns mit der Verwendung der Option --amend
, um den letzten Commit wieder herzustellen.
In Branches auf einen Blick gehen wir sehr viel detaillierter darauf ein, was git commit
bewirkt und warum es das so macht.
In Commits signieren haben wir uns angesehen, wie man Commits kryptographisch mit dem -S
Flag signiert.
Schließlich werfen wir einen Blick darauf, was der Befehl git commit
im Hintergrund macht und wie er tatsächlich eingebunden ist in Commit Objekte.
git reset
Der git reset
Befehl wird in erster Linie verwendet, um Aktionen rückgängig zu machen, wie man am Kommando erkennen kann.
Er verschiebt den HEAD
Pointer und ändert optional den index
oder die Staging-Area und kann optional auch das Arbeitsverzeichnis ändern, wenn Sie --hard
verwenden.
Bei falscher Verwendung der letzten Option kann mit diesem Befehl auch Arbeit verloren gehen, vergewissern Sie sich daher, dass Sie ihn verstehen, bevor Sie ihn verwenden.
Wir befassen uns zunächst mit der einfachsten Anwendung von git reset
in Eine Datei aus der Staging-Area entfernen. Dort benutzen wir es, um eine Datei, die wir mit git add
hinzu gefügt haben, wieder aus der Staging-Area zu entfernen.
Wir gehen dann in Reset entzaubert detailliert auf diesen Befehl ein, der sich ganz der Beschreibung dieses Befehls widmet.
Wir verwenden git reset --hard
, um einen Merge in Einen Merge abbrechen abzubrechen, wo wir auch git merge --abort
verwenden, das eine Art Wrapper für den git reset
Befehl ist.
git rm
Der git rm
Befehl wird verwendet, um Dateien aus dem Staging-Bereich und dem Arbeitsverzeichnis von Git zu entfernen.
Er ähnelt git add
dahingehend, dass er das Entfernen einer Datei für den nächsten Commit vorbereitet.
Wir behandeln den Befehl git rm
in Dateien löschen ausführlich, einschließlich des rekursiven Entfernens von Dateien und des Entfernens von Dateien aus der Staging-Area, wobei sie jedoch, mit --cached
, im Arbeitsverzeichnis belassen werden.
Die einzige andere abweichende Verwendung von git rm
im Buch ist in Objekte löschen beschrieben, wo wir kurz die --ignore-unmatch
beim Ausführen von git filter-branch
verwenden und erklären, was es einfach nicht fehlerfrei macht, wenn die Datei, die wir zu entfernen versuchen, nicht existiert.
Das kann bei der Erstellung von Skripten nützlich sein.
git mv
Der git mv
Befehl ist ein schlanker komfortabler Befehl, um eine Datei zu verschieben und dann git add
für die neue Datei und git rm
für die alte Datei auszuführen.
Wir beschreiben diesen Befehl nur kurz in Dateien verschieben.
git clean
Der Befehl git clean
wird verwendet, um unerwünschte Dateien aus Ihrem Arbeitsverzeichnis zu entfernen.
Dazu kann das Entfernen von temporären Build-Artefakten oder das Mergen von Konfliktdateien gehören.
Wir behandeln viele der Optionen und Szenarien, in denen Sie den clean-Befehl verwenden könnten in Bereinigung des Arbeitsverzeichnisses.