Git dominiert als führendes, verteiltes Versionskontrollsystem die Welt der Softwareentwicklung . Für die Mitwirkung an umfangreicheren Softwareprojekten, die Kollaboration im Team oder die Beteiligung an Projekten auf Plattformen wie GitHub, ist ein Grundverständnis von Git unerlässlich. Ziel dieses Artikels ist es, Anfängern einen prägnanten Überblick über die essenziellen Git-Befehle zu verschaffen und die ersten Schritte in der Welt der Versionskontrolle zu erleichtern. Obwohl sich der Artikel auf GitHub konzentriert, sind die Konzepte und Anweisungen größtenteils auf andere Plattformen wie GitLab übertragbar, abgesehen von spezifischen Repository-URLs.
Warum Git nutzen?
Git erleichtert die Teamarbeit enorm. Stellen Sie sich vor, mehrere Entwickler würden direkt im selben Code-Verzeichnis arbeiten; schnell würden Änderungen verloren gehen oder überschrieben werden, und ein effizientes Versionsmanagement wäre unmöglich.
Git ermöglicht es jedem Entwickler, eine persönliche Kopie des Codes zu erstellen, Änderungen vorzunehmen und diese dann wieder in das Hauptverzeichnis einzufügen, wodurch Konflikte vermieden und ein kohärentes Zusammenführen von Codeänderungen sichergestellt wird.
Erste Schritte mit Git
Zunächst muss Git installiert sein. Auf Linux-Systemen wird dies üblicherweise mit dem Befehl apt install git erreicht.
Windows- und MacOS-Benutzer finden entsprechende Versionen auf der offiziellen Git-Webseite.
Ein Git-Repository erstellen und auf GitHub veröffentlichen
Ein lokales Repository aus einem bestehenden Codeverzeichnis zu erstellen, beginnt mit dem Befehl git init.
Um dieses Repository auf GitHub für Teammitglieder zugänglich zu machen, ist zunächst die Erstellung eines neuen Repositories auf GitHub erforderlich.
Das Hochladen Ihres lokalen Repository-Inhalts auf GitHub erfolgt über den Befehl git push .
Wichtig ist, vorab sensible Daten auszusortieren, um Datenschutzprobleme zu vermeiden.
Für Dateien, die nicht hochgeladen werden sollen, bietet sich die .gitignore-Datei an.
Mit entfernten Repositories arbeiten
Das Klonen eines bestehenden Repositories auf den eigenen Computer ist mit git clone möglich.
Dies ist besonders nützlich, um direkt mit der Arbeit an einem Projekt zu beginnen, ohne zusätzliche Konfigurationen vornehmen zu müssen.
Wichtige Git-Befehle und -Konzepte
git status: Überprüft den aktuellen Status Ihres Repositories. Dieser Befehl gibt Informationen darüber, welche Dateien geändert wurden und ob sie für den Commit bereit sind.
git add: Fügt Dateien zur Staging-Area hinzu, bereit für den Commit. Mit diesem Befehl können Sie festlegen, welche Änderungen in den nächsten Commit einfließen sollen.
git commit: Sichert Ihre Änderungen im Repository mit einer erklärenden Nachricht. Durch das Hinzufügen einer aussagekräftigen Nachricht zum Commit helfen Sie anderen Entwicklern (und auch sich selbst), die vorgenommenen Änderungen besser zu verstehen.
git push/pull: Aktualisiert das entfernte Repository oder synchronisiert lokale Änderungen mit dem Server. `git push` wird verwendet, um lokale Commits auf den Remote-Server hochzuladen, während `git pull` Änderungen aus dem Remote-Repository herunterlädt und mit Ihrem lokalen Branch zusammenführt.
Branches: Ermöglichen parallele Entwicklungsstränge und erleichtern die Teamarbeit. Branches ermöglichen es Ihnen, unabhängig voneinander an verschiedenen Funktionen oder Fehlerkorrekturen zu arbeiten, ohne die Hauptentwicklungslinie zu beeinträchtigen.
git init: Initialisiert ein neues Git-Repository im aktuellen Verzeichnis. Dieser Befehl wird verwendet, um ein leeres Repository zu erstellen oder ein vorhandenes Verzeichnis in ein Git-Repository umzuwandeln.
git remote add origin [Repository-URL]: Fügt Ihrem lokalen Repository eine Remote-URL hinzu. Dies ist erforderlich, um Ihr lokales Repository mit einem Remote-Repository (z. B. auf GitHub) zu verknüpfen.
git add .: Fügt alle geänderten Dateien im aktuellen Verzeichnis zur Staging-Area hinzu. Dieser Befehl bereitet Ihre Änderungen darauf vor, in den nächsten Commit aufgenommen zu werden.
git commit -m "Initial commit": Erstellt einen Commit mit den in der Staging-Area befindlichen Änderungen und einer erklärenden Nachricht.
git push -u origin master: Lädt lokale Commits auf den Remote-Server hoch und verknüpft den lokalen Branch mit dem Remote-Branch.
Ein entferntes Repository herunterladen:
git clone [Repository-URL]: Klonen Sie ein entferntes Repository auf Ihren lokalen Computer. Dieser Befehl erstellt eine Kopie des Remote-Repositorys in Ihrem lokalen Dateisystem.
Branches:
git branch: Zeigt eine Liste der Branches im aktuellen Repository an.
git checkout [Branchname]: Wechselt zum angegebenen Branch. Dieser Befehl wird verwendet, um zwischen verschiedenen Branches zu wechseln.
git checkout -b [Branchname]: Erstellt einen neuen Branch und wechselt zu diesem. Dieser Befehl wird verwendet, um einen neuen Branch zu erstellen und sofort zu diesem zu wechseln.
git merge [Branchname]: Führt die Änderungen eines anderen Branches in den aktuellen Branch zusammen. Dieser Befehl wird verwendet, um Änderungen aus einem anderen Branch in den aktuellen Branch zu übernehmen.
git branch -d [Branchname]: Löscht einen bestimmten Branch. Beachten Sie, dass dieser Befehl nur ausgeführt werden sollte, wenn die Änderungen des zu löschenden Branches bereits in andere Branches integriert wurden.
Zusätzliche Wichtige Git-Befehle und -Konzepte
git commit --amend: Dieser Befehl ermöglicht es Ihnen, den letzten Commit zu ändern, z.B. um die Commit-Nachricht zu verbessern oder vergessene Dateien hinzuzufügen.
git remote -v: Zeigt die URL der entfernten Repositories an, mit denen das aktuelle lokale Repository verbunden ist. Praktisch, um zu überprüfen, wohin Ihr Code gepusht oder geklont wird.
git config --global user.name "Ihr Name": Setzt den globalen Benutzernamen, der mit allen zukünftigen Commits verwendet wird. Es ist wichtig, diese Einstellungen vor dem ersten Commit zu konfigurieren.
git config --global user.email "Ihre E-Mail": Setzt die globale E-Mail-Adresse, die mit allen zukünftigen Commits verwendet wird. Dies ist erforderlich, damit andere Entwickler wissen, wer die Änderungen vorgenommen hat.
git log --oneline: Zeigt die Commit-Historie in einer kurzen, einzeiligen Formatierung an, was die Übersichtlichkeit verbessert.
git log --graph: Visualisiert die Commit-Historie als ASCII-Graphen, der die Verzweigungen und Zusammenführungen (Merges) zeigt. Dies hilft, die Struktur der Entwicklungs-Historie besser zu verstehen.
git rebase: Wendet Änderungen aus einem Branch auf einen anderen Branch an und integriert dabei Commits linear, ohne dass eine Merge-Historie entsteht. Es wird oft verwendet, um Änderungen in einem sauberen Zustand zu halten.
git revert [Commit-ID]: Erzeugt einen neuen Commit, der die Änderungen eines vorherigen Commits rückgängig macht, ohne die Commit-Historie zu löschen.
git restore [Dateiname]: Verwenden Sie diesen Befehl, um Änderungen in der Arbeitskopie (Working Directory) rückgängig zu machen. Dieser Befehl kann nützlich sein, um versehentlich vorgenommene Änderungen zu verwerfen.
git diff: Zeigt die Unterschiede zwischen den aktuellen Änderungen und dem letzten Commit an. Sehr hilfreich, um zu sehen, was geändert wurde, bevor ein Commit erstellt wird.
git reset --hard [Commit-ID]: Setzt das Repository auf einen bestimmten Zustand zurück, indem es alle lokalen Änderungen verwirft und den HEAD-Pointer neu positioniert.
git fetch: Lädt alle neuen Änderungen aus dem entfernten Repository herunter, ohne sie automatisch in den aktuellen Branch zu integrieren. Dies ist nützlich, um auf dem Laufenden zu bleiben, ohne Ihren Arbeitsbereich zu beeinflussen.
git checkout -- [Dateiname]: Setzt die Änderungen in einer Datei zurück und stellt die letzte Commit-Version wieder her. Dies ist praktisch, wenn Sie eine bestimmte Datei auf ihren ursprünglichen Zustand zurücksetzen möchten.
git branch -a: Listet alle Branches auf, einschließlich der entfernten Branches. Dadurch erhalten Sie eine vollständige Übersicht über alle verfügbaren Branches.
git remote show [Name]: Zeigt detaillierte Informationen über das entfernte Repository an, einschließlich der Branches und deren Tracking-Status.
git cherry-pick [Commit-ID]: Übernimmt einen bestimmten Commit aus einem Branch und fügt ihn in den aktuellen Branch ein. Dies ist nützlich, um bestimmte Änderungen zu übernehmen, ohne den gesamten Branch zusammenzuführen.
git tag [Tag-Name]: Erstellt einen Tag (eine Art Lesezeichen) für einen bestimmten Commit, der oft zur Markierung von Release-Versionen verwendet wird. Tags sind hilfreich, um wichtige Meilensteine im Projekt zu kennzeichnen.
git log --stat: Zeigt die Commit-Historie mit einer Zusammenfassung der Änderungen für jede Datei an. Dies gibt Ihnen einen detaillierten Überblick über die Auswirkungen jedes Commits.
git merge --no-ff [Branch-Name]: Führt zwei Branches zusammen, ohne einen Fast-Forward-Merge zu verwenden, wodurch ein neuer Commit erstellt wird, der die Historie beibehält.
git diff --staged: Zeigt die Unterschiede zwischen der Staging-Area und dem letzten Commit an. Dies hilft zu sehen, welche Änderungen sich im Staging-Bereich befinden und bereit für den Commit sind.
git reset [Dateiname]: Entfernt eine Datei aus der Staging-Area, während die Änderungen in der Arbeitskopie erhalten bleiben. Dies ist nützlich, wenn Sie versehentlich eine Datei gestaged haben.
git remote remove [Name]: Entfernt die Verbindung zu einem entfernten Repository. Dieser Befehl kann verwendet werden, um nicht mehr benötigte Remote-Verbindungen zu löschen.
git reflog: Zeigt eine Logdatei aller Änderungen an, die in Ihrem lokalen Repository vorgenommen wurden, einschließlich zurückgesetzter Commits. Dies ist besonders hilfreich, um gelöschte oder verlorene Commits wiederherzustellen.
git bisect: Ein leistungsstarkes Debugging-Tool, das den Commit findet, der einen Fehler eingeführt hat, indem es das Repository aufteilt und testet, bis der problematische Commit identifiziert ist.
git archive: Erstellt ein Archiv des gesamten Repositorys oder eines bestimmten Branches, das als .zip- oder .tar-Datei gespeichert werden kann. Dies ist nützlich, um eine vollständige Version des Projekts zu exportieren.
git show [Commit-ID]: Zeigt detaillierte Informationen über einen bestimmten Commit an, einschließlich der Änderungen und der Commit-Nachricht. Dies ist hilfreich, um die Details eines bestimmten Commits zu überprüfen.
git shortlog: Zeigt eine Zusammenfassung der Commit-Historie in einem kurzen, aber aussagekräftigen Format an, das nach Autoren und Commit-Nachrichten gruppiert ist.
git blame [Dateiname]: Zeigt, welche Person zuletzt eine bestimmte Zeile in einer Datei geändert hat. Dies ist hilfreich, um den Ursprung einer bestimmten Änderung zu ermitteln.
git mv [alte Datei] [neue Datei]: Verschiebt oder benennt eine Datei im Repository um und bereitet die Änderung für den nächsten Commit vor.
git clean -f: Entfernt nicht verfolgte Dateien aus dem Arbeitsverzeichnis. Dies ist hilfreich, um temporäre oder generierte Dateien zu löschen, die nicht in das Repository gehören.
git config --list: Zeigt alle aktuellen Git-Konfigurationseinstellungen an, einschließlich Benutzernamen, E-Mail und anderen globalen oder lokalen Einstellungen.
git cherry: Zeigt, welche Commits in einem Branch vorhanden sind, die nicht in einem anderen Branch vorhanden sind. Dies hilft, Änderungen zwischen zwei Branches zu vergleichen.
git apply [Patch-Datei]: Wendet Änderungen aus einer Patch-Datei auf das Repository an. Dies ist nützlich, um Korrekturen oder neue Funktionen, die in Form eines Patches bereitgestellt werden, zu integrieren.
git pull --rebase: Führt einen Pull mit Rebase durch, der Änderungen in einem linearen Verlauf zusammenführt, wodurch die Commit-Historie sauberer bleibt.
git commit --squash [Commit-ID]: Kombiniert mehrere Commits zu einem einzigen, um die Commit-Historie aufzuräumen und zu vereinfachen. Dies wird häufig verwendet, um kleine oder zusammengehörige Änderungen zusammenzuführen.
git log --pretty=oneline: Zeigt die Commit-Historie in einer Einzeilenansicht an, was die Übersichtlichkeit und Lesbarkeit erhöht.
git rebase -i HEAD~n: Startet einen interaktiven Rebase für die letzten n Commits, um sie zu bearbeiten, zu entfernen oder zu kombinieren.
git submodule add [Repository-URL]: Fügt ein externes Repository als Submodul hinzu, das innerhalb des Hauptprojekts verwaltet wird. Dies ist nützlich, um Abhängigkeiten oder Bibliotheken zu integrieren.
git log --since="2 weeks ago": Zeigt alle Commits an, die seit einem bestimmten Datum oder Zeitraum vorgenommen wurden.
git fetch --all: Holt alle neuen Änderungen von allen entfernten Repositories ab, ohne sie in den aktuellen Branch zu integrieren.
git mergetool: Startet ein grafisches Tool zur Zusammenführung von Änderungen in einem Merge-Konflikt, das die Lösung von Konflikten erleichtert.
git log --author="Autorname": Zeigt alle Commits an, die von einem bestimmten Autor vorgenommen wurden. Dies ist hilfreich, um die Beiträge eines bestimmten Entwicklers zu überprüfen.
git rm --cached [Dateiname]: Entfernt eine Datei aus dem Repository, ohne sie aus dem Arbeitsverzeichnis zu löschen. Dies ist nützlich, um Dateien, die nicht mehr verfolgt werden sollen, zu entfernen.
git rev-parse --abbrev-ref HEAD: Zeigt den aktuellen Branch-Namen an. Dies ist praktisch, um schnell den aktuellen Arbeitszweig zu identifizieren.
git commit --allow-empty: Erstellt einen leeren Commit, der keine Änderungen enthält, aber eine Commit-Nachricht hat. Dies wird häufig verwendet, um Markierungen oder Hinweise in der Historie zu erstellen.
git diff --name-only: Zeigt nur die Namen der geänderten Dateien an, ohne die tatsächlichen Änderungen anzuzeigen. Dies ist hilfreich, um schnell zu sehen, welche Dateien betroffen sind.
git config --global alias.st status: Erstellt einen Alias für einen Git-Befehl, in diesem Fall `git st` für `git status`, um die Eingabe zu verkürzen und zu vereinfachen.
git log --reverse: Zeigt die Commit-Historie in umgekehrter Reihenfolge an, beginnend mit dem ältesten Commit.
git reset --soft HEAD~1: Setzt den letzten Commit zurück und belässt die Änderungen in der Staging-Area. Dies ist nützlich, um Änderungen erneut zu bearbeiten oder zu überprüfen.
git remote prune origin: Entfernt gelöschte Remote-Branches aus Ihrer lokalen Liste der Branches. Dies hält die Liste der Branches sauber und aktuell.
git describe --tags: Zeigt den nächsten Tag in der Historie an, basierend auf dem aktuellen Commit. Dies ist hilfreich, um eine spezifische Version oder Release-Nummer zu identifizieren.
git ls-tree -r HEAD: Zeigt den Inhalt des Repositories zu einem bestimmten Commit an, einschließlich aller Dateien und Verzeichnisse.
git remote update: Aktualisiert alle Remote-Verbindungen und deren Informationen, ohne die Änderungen in den lokalen Branch zu integrieren. Dies ist nützlich, um auf dem neuesten Stand zu bleiben, ohne den Arbeitsbereich zu beeinflussen.
git fsck: Überprüft das Repository auf fehlerhafte Objekte und Integritätsprobleme. Dies hilft, potenzielle Probleme zu identifizieren und zu beheben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git rerere: Aktiviert das Wiederverwenden von Merge-Konfliktlösungen, wodurch zukünftige Konflikte automatisch behoben werden können.
git diff --cached: Zeigt die Unterschiede zwischen der Staging-Area und dem letzten Commit an. Dies hilft zu sehen, welche Änderungen sich im Staging-Bereich befinden und bereit für den Commit sind.
git pull --rebase=interactive: Startet einen interaktiven Rebase während eines Pulls, um die Änderungen manuell zu überprüfen und zu bearbeiten.
git cherry-pick --no-commit [Commit-ID]: Wendet einen Commit an, ohne automatisch einen neuen Commit zu erstellen. Dies ermöglicht es, die Änderungen vor der endgültigen Übernahme zu überprüfen.
git log --all --decorate --oneline --graph: Zeigt die gesamte Commit-Historie mit Dekorationen, in einer kompakten einzeiligen Ansicht und mit ASCII-Grafiken, die Verzweigungen und Zusammenführungen anzeigen.
git stash save "Nachricht": Speichert nicht gespeicherte Änderungen im Stash mit einer benutzerdefinierten Nachricht, um sie später leichter identifizieren zu können.
git rebase --onto: Wendet Änderungen eines bestimmten Branches auf einen anderen Branch an, wobei ein anderer Zielbranch verwendet wird. Dies ist nützlich, um Änderungen zwischen verschiedenen Branches zu verschieben.
git diff-tree: Zeigt die Baumstruktur der Änderungen für einen bestimmten Commit an, einschließlich der geänderten Dateien und deren Pfade.
git log --format="%h %s": Zeigt die Commit-Historie in einem benutzerdefinierten Format an, einschließlich der Commit-Kürzel und der Betreffzeilen.
git diff --color-words: Hebt Änderungen innerhalb von Wörtern hervor, anstatt ganze Zeilen zu markieren. Dies ist hilfreich, um feinkörnige Änderungen zu identifizieren.
git rebase -p: Führt einen Rebase durch und behält dabei die Merge-Commit-Historie bei. Dies ist nützlich, um die Struktur von Branches beizubehalten, während die Änderungen linearisiert werden.
git ls-files: Zeigt eine Liste aller Dateien im aktuellen Branch an, einschließlich der nicht verfolgten Dateien.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reset --mixed HEAD~1: Setzt den letzten Commit zurück, behält aber die Änderungen im Arbeitsverzeichnis bei, ohne sie zu stagen.
git cherry-pick --edit [Commit-ID]: Übernimmt einen Commit und öffnet einen Editor, um die Commit-Nachricht zu bearbeiten, bevor er in den aktuellen Branch eingefügt wird.
git merge --squash [Branch-Name]: Führt einen Branch zusammen, ohne die Änderungen sofort zu committen, sodass Sie sie manuell überprüfen können.
git archive --format=zip --output=archive.zip [Branch-Name]: Erstellt ein ZIP-Archiv des angegebenen Branches und speichert es in einer Datei.
git checkout --orphan [Neuer Branch]: Erstellt einen neuen, leeren Branch ohne Vorgeschichte, was nützlich ist, um von Grund auf neu zu beginnen.
git branch --merged: Zeigt alle Branches an, die vollständig in den aktuellen Branch integriert wurden, und sicher gelöscht werden können.
git checkout [Commit-ID] -- [Dateiname]: Stellt eine bestimmte Datei auf den Zustand eines bestimmten Commits zurück, ohne den Rest des Repositories zu beeinflussen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git submodule update --init --recursive: Initialisiert und aktualisiert alle Submodule im Repository, einschließlich verschachtelter Submodule.
git push --force-with-lease: Erzwingt ein Push, während es sicherstellt, dass keine ungewollten Änderungen auf dem Remote-Branch überschrieben werden.
git diff --stat: Zeigt eine statistische Zusammenfassung der Änderungen an, einschließlich der Anzahl der geänderten Zeilen pro Datei.
git stash drop [Stash-Name]: Entfernt einen bestimmten Stash-Eintrag aus der Stash-Liste, um den Speicherplatz freizugeben.
git blame --show-name [Dateiname]: Zeigt, welche Person zuletzt eine bestimmte Zeile in einer Datei geändert hat, und gibt den Dateinamen für jede Zeile an.
git diff --check: Überprüft auf mögliche Konflikte oder Probleme in den Änderungen, bevor ein Commit erstellt wird.
git update-index --assume-unchanged [Dateiname]: Markiert eine Datei als unverändert, um zu verhindern, dass sie beim nächsten Commit erfasst wird.
git push origin --delete [Branch-Name]: Löscht einen bestimmten Branch aus dem Remote-Repository. Dies wird verwendet, um alte oder nicht mehr benötigte Branches zu entfernen.
git commit --fixup [Commit-ID]: Erstellt einen Fixup-Commit, der automatisch mit dem angegebenen Commit kombiniert werden kann.
git rebase --interactive --autosquash: Startet einen interaktiven Rebase mit automatischer Kombination von Fixup-Commits.
git fsck --full: Überprüft die vollständige Integrität des Repositories und repariert mögliche Schäden oder Probleme.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git rev-list --count HEAD: Zeigt die Gesamtanzahl der Commits im aktuellen Branch an.
git pull --recurse-submodules: Führt einen Pull durch und aktualisiert alle Submodule im Repository.
git gc: Führt eine Garbage Collection durch, um Speicherplatz freizugeben und das Repository zu optimieren.
git blame --color-lines [Dateiname]: Hebt die Änderungshistorie jeder Zeile in einer Datei farblich hervor.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git diff --no-index [Datei1] [Datei2]: Vergleicht zwei Dateien oder Verzeichnisse, ohne sie in einem Repository zu verfolgen.
git log --follow [Dateiname]: Zeigt die Commit-Historie einer bestimmten Datei an, einschließlich Umbenennungen und Verschiebungen.
git blame --reverse [Dateiname]: Zeigt die Änderungshistorie einer Datei in umgekehrter Reihenfolge an, beginnend mit der ältesten Änderung.
git remote prune --dry-run: Simuliert das Entfernen von alten Remote-Branch-Einträgen, ohne sie tatsächlich zu löschen.
git rev-parse --short HEAD: Gibt den aktuellen Commit-Kürzel in einer kompakten Form zurück.
git branch -r: Listet alle Remote-Branches auf, die im aktuellen Repository verfügbar sind.
git cherry-pick --continue: Setzt einen abgebrochenen Cherry-Pick-Prozess fort, nachdem Konflikte manuell gelöst wurden.
git clean -i: Startet einen interaktiven Modus zur Bereinigung von unbenutzten Dateien im Arbeitsverzeichnis.
git diff --cached --name-status: Zeigt die Namen und Status der gestagten Dateien an, ohne die tatsächlichen Änderungen anzuzeigen.
git log --abbrev-commit --pretty=oneline: Zeigt die Commit-Historie in einem einzeiligen Format mit verkürzten Commit-Kürzeln an.
git blame --incremental [Dateiname]: Zeigt die Änderungshistorie einer Datei in kleinen, inkrementellen Schritten an.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git bisect start: Startet einen bisect-Prozess, um den Commit zu finden, der einen Fehler eingeführt hat, indem er das Repository aufteilt und testet.
git branch --contains [Commit-ID]: Zeigt alle Branches an, die einen bestimmten Commit enthalten.
git merge --abort: Bricht einen laufenden Merge-Prozess ab und stellt den ursprünglichen Zustand des Branches wieder her.
git cherry-pick --no-commit --strategy=recursive [Commit-ID]: Übernimmt einen Commit ohne automatischen Commit und verwendet eine spezifische Merge-Strategie.
git show-branch: Zeigt eine Übersicht der Branch-Historie an, einschließlich der Verzweigungen und Zusammenführungen.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reset --hard ORIG_HEAD: Setzt das Repository auf den Zustand vor dem letzten gefährlichen Befehl zurück, wie einem fehlgeschlagenen Merge.
git stash apply --index: Wendet einen Stash auf das Arbeitsverzeichnis an, während der Staging-Status der Dateien beibehalten wird.
git reset --hard HEAD^: Setzt das Repository auf den Zustand des vorherigen Commits zurück und verwirft alle lokalen Änderungen.
git log --grep="[Suchbegriff]": Zeigt alle Commits an, die einen bestimmten Suchbegriff in der Commit-Nachricht enthalten.
git reset --merge: Setzt das Repository zurück und behält die Änderungen im Arbeitsverzeichnis bei, um einen abgebrochenen Merge zu verwerfen.
git diff --staged --stat: Zeigt eine statistische Zusammenfassung der gestagten Änderungen an, einschließlich der Anzahl der geänderten Zeilen pro Datei.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git rev-list --all --remotes: Zeigt eine Liste aller Commits im gesamten Repository an, einschließlich der Remote-Commits.
git show [Tag-Name]: Zeigt Informationen über einen bestimmten Tag an, einschließlich des zugehörigen Commits und der Tag-Nachricht.
git commit --only [Dateiname]: Erstellt einen Commit, der nur die Änderungen in einer bestimmten Datei enthält, ohne andere Änderungen zu erfassen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git bisect bad: Markiert den aktuellen Commit als fehlerhaft während eines bisect-Prozesses.
git branch --edit-description [Branch-Name]: Bearbeitet die Beschreibung eines bestimmten Branches, um zusätzliche Informationen hinzuzufügen.
git stash list: Zeigt alle gespeicherten Stash-Einträge an, einschließlich der zugehörigen Nachrichten und IDs.
git merge --no-commit --squash [Branch-Name]: Führt einen Branch zusammen, ohne die Änderungen sofort zu committen, sodass Sie sie manuell überprüfen können.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reset --hard HEAD~2: Setzt das Repository auf den Zustand vor den letzten beiden Commits zurück und verwirft alle lokalen Änderungen.
git show --stat [Commit-ID]: Zeigt Informationen über einen bestimmten Commit an, einschließlich der geänderten Dateien und der Anzahl der geänderten Zeilen.
git log --since="[Datum]": Zeigt alle Commits an, die seit einem bestimmten Datum vorgenommen wurden.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git branch --merged [Branch-Name]: Zeigt alle Branches an, die vollständig in einen bestimmten Branch integriert wurden.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git stash branch [Branch-Name]: Erstellt einen neuen Branch aus einem gespeicherten Stash-Eintrag und wendet die Änderungen darauf an.
git diff --name-status: Zeigt die Namen und Status der geänderten Dateien an, ohne die tatsächlichen Änderungen anzuzeigen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git push --all: Pusht alle lokalen Branches auf das Remote-Repository. Dies ist hilfreich, um sicherzustellen, dass alle Änderungen synchronisiert sind.
git bisect reset: Beendet einen bisect-Prozess und stellt den ursprünglichen Zustand des Repositories wieder her.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reset --soft HEAD~3: Setzt das Repository auf den Zustand vor den letzten drei Commits zurück und behält die Änderungen im Staging-Bereich.
git show-ref: Zeigt alle Referenzen im Repository an, einschließlich Branches, Tags und Stash-Einträgen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git remote prune origin: Entfernt alte Remote-Branch-Einträge, die nicht mehr existieren, um die Liste der Branches sauber zu halten.
git diff --color=always: Zeigt die Unterschiede mit Farbhervorhebungen an, um die Lesbarkeit zu verbessern.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git branch -a -r: Listet alle Remote-Branches auf, einschließlich der Branches, die nicht mehr existieren.
git push --tags: Pusht alle Tags auf das Remote-Repository, um sicherzustellen, dass alle Markierungen synchronisiert sind.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git merge-base [Branch1] [Branch2]: Bestimmt den gemeinsamen Vorfahren zweier Branches, um den besten Merge-Punkt zu finden.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git commit --squash --no-commit: Kombiniert mehrere Commits in einen einzigen Commit, ohne die Änderungen sofort zu übernehmen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git stash pop --index: Wendet einen Stash-Eintrag auf das Arbeitsverzeichnis an und behält den Staging-Status der Dateien bei.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git log --author-date-order: Zeigt die Commit-Historie in der Reihenfolge der Autoren-Daten an.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git diff --ignore-space-change: Ignoriert Änderungen in Leerzeichen bei der Anzeige von Unterschieden.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git branch -vv: Zeigt eine ausführliche Liste der Branches an, einschließlich der Tracking-Informationen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git push origin --tags --prune: Pusht alle Tags auf das Remote-Repository und entfernt alte Remote-Branch-Einträge.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git merge --strategy=recursive --squash [Branch-Name]: Führt einen Branch zusammen, ohne die Änderungen sofort zu committen, und verwendet eine spezifische Merge-Strategie.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git branch -a --merged: Listet alle Branches auf, die vollständig in den aktuellen Branch integriert wurden.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git commit --fixup --no-commit: Erstellt einen Fixup-Commit, der automatisch mit dem angegebenen Commit kombiniert werden kann, ohne die Änderungen sofort zu übernehmen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git log --abbrev-commit --graph --decorate: Zeigt die Commit-Historie in einem kompakten Format mit Dekorationen und ASCII-Grafiken an.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git bisect good [Commit-ID]: Markiert einen bestimmten Commit als fehlerfrei während eines bisect-Prozesses.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git stash apply --index [Stash-Name]: Wendet einen bestimmten Stash-Eintrag auf das Arbeitsverzeichnis an und behält den Staging-Status der Dateien bei.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git branch --edit-description: Bearbeitet die Beschreibung des aktuellen Branches, um zusätzliche Informationen hinzuzufügen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git merge --strategy-option=ours [Branch-Name]: Führt einen Branch zusammen und wählt bei Konflikten automatisch die Änderungen aus dem aktuellen Branch.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git push --dry-run: Simuliert einen Push, ohne die Änderungen tatsächlich zu übertragen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git branch --contains: Zeigt alle Branches an, die einen bestimmten Commit enthalten.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git commit --squash [Commit-ID]: Kombiniert mehrere Commits zu einem einzigen, um die Commit-Historie aufzuräumen und zu vereinfachen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git log --graph --oneline: Zeigt die Commit-Historie als ASCII-Graphen mit einer einzeiligen Formatierung an.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git bisect start: Startet einen bisect-Prozess, um den Commit zu finden, der einen Fehler eingeführt hat.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git stash save "Nachricht" --include-untracked: Speichert nicht gespeicherte Änderungen im Stash, einschließlich ungetrackter Dateien, mit einer benutzerdefinierten Nachricht.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git branch -a: Listet alle Branches auf, einschließlich der entfernten Branches.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git merge --squash --no-commit: Führt einen Branch zusammen, ohne die Änderungen sofort zu committen, sodass Sie sie manuell überprüfen können.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git log --pretty=oneline --abbrev-commit: Zeigt die Commit-Historie in einem kompakten Format mit verkürzten Commit-Kürzeln an.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git checkout --detach: Wechselt in einen separaten "Detached HEAD"-Zustand, um Änderungen vorzunehmen, ohne einen neuen Branch zu erstellen.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git branch -vv --merged: Listet alle Branches auf, die vollständig in den aktuellen Branch integriert wurden, mit detaillierten Informationen.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
git reflog expire --expire=now --all: Löscht alte Reflog-Einträge, um Speicherplatz freizugeben. Dies ist besonders nützlich, um das Repository schlanker zu halten.
git reflog expire --expire-unreachable=now --all: Löscht Reflog-Einträge für unzugängliche Commits, um das Repository aufzuräumen und Speicherplatz freizugeben.
Zusammenfassung und weitere Schritte
Der Umgang mit Git ist anfangs vielleicht herausfordernd, wird aber schnell zur zweiten Natur, sobald die Grundlagen verstanden sind.
Die hier vorgestellten Befehle und Konzepte sind nur der Anfang einer umfangreichen Reise in die Welt der Versionskontrolle.
Experimentieren Sie mit einem Beispielprojekt, um ein Gefühl für den Workflow zu bekommen und Ihre Kenntnisse zu vertiefen.
Zusätzliche Ressourcen
Für diejenigen, die ihre Git-Kenntnisse praktisch vertiefen möchten, bietet die Seite Try Git interaktive Übungen.