Kurs
Wenn du mit Git arbeitest, ist es nicht nur eine Best Practice, dein Repository sauber und organisiert zu halten - es ist unerlässlich für eine reibungslose Zusammenarbeit und eine effiziente Versionskontrolle. Hier kommt .gitignore
ins Spiel. Diese praktische Datei teilt Git mit, welche Dateien ignoriert werden sollen. So wird unnötiges Durcheinander vermieden und deine Commits konzentrieren sich auf das, was wirklich wichtig ist.
Ohne .gitignore
kann sich dein Projektarchiv schnell mit temporären Dateien, Protokollen und anderen Dingen füllen, die nicht in die Versionskontrolle gehören. Schlimmer noch, du könntest versehentlich sensible Informationen weitergeben.
In diesem Tutorial lernst du, wie du eine .gitignore
Datei erstellst und verwendest, um Ordnung in dein Projekt zu bringen, häufige Fallstricke zu vermeiden und effektiver mit Git zu arbeiten. Lass uns eintauchen!
Was ist eine .gitignore-Datei?
Eine .gitignore
Datei ist eine Konfigurationsdatei, die in Git verwendet wird, um dem Versionskontrollsystem mitzuteilen, welche Dateien oder Verzeichnisse ignoriert werden sollen, wenn Änderungen bereitgestellt oder übertragen werden.
Sie verhindert, dass unnötige Dateien - wie temporäre, vom System generierte oder build-bezogene Dateien - dein Repository verstopfen. Ein aufgeräumtes Projektarchiv erleichtert die Zusammenarbeit und stellt sicher, dass nur wichtige Dateien erfasst werden.
Die Datei .gitignore
ist eine einfache Textdatei, die im Stammverzeichnis deines Git-Repositorys liegt. Sie enthält Muster, die Git mitteilen, welche Dateien oder Verzeichnisse ignoriert werden sollen. Diese Muster können an die Bedürfnisse deines Projekts angepasst werden und helfen dir, ein gut organisiertes Repository zu verwalten.
Neu bei Git und GitHub? Mit diesem GitHub- und Git-Tutorial bekommst du eine anfängerfreundliche Einführung in die Versionskontrolle.
Hier sind einige gängige Kategorien von Dateien und Verzeichnissen, die du ignorieren solltest:
- Artefakte bauen: Dateien, die während des Build-Prozesses erzeugt werden und aus dem Quellcode wiederhergestellt werden können, wie z.B.:
dist/
build/
(Frontend- und Backend-Build-Ausgaben)target/
(Java und andere kompilierte Sprachversionen)- Abhängigkeiten: Paketmanagementsysteme erstellen Verzeichnisse für installierte Bibliotheken, die nicht nachverfolgt werden sollten:
node_modules/
(Node.js)vendor/
(PHP, Composer).venv/
venv/
(Virtuelle Python-Umgebungen)- Systemspezifische Dateien: Diese Dateien werden automatisch vom Betriebssystem erzeugt und tragen nicht zum Projekt bei:
.DS_Store
(macOS)Thumbs.db
(Windows)- IDE-Konfigurationsdateien: Jeder Entwickler kann eine andere Entwicklungsumgebung verwenden, daher sollten seine persönlichen Einstellungen nicht in die Versionskontrolle aufgenommen werden:
.vscode/
(VS-Code).idea/
(JetBrains IDEs).project
,.settings/
(Eclipse)- Logs und temporäre Dateien: Logs, Caches und temporäre Dateien sollten ignoriert werden, um unnötigen Ballast zu vermeiden:
*.log
,npm-debug.log*
,yarn-debug.log*
,yarn-error.log*
(Logs von verschiedenen Tools)*.tmp
*.bak
(Temporäre und Sicherungsdateien).mypy_cache/
__pycache__/
(Python-Caches).ipynb_checkpoints/
(Jupyter Notebook Checkpoints)- Umwelt- und Geheimdateien: Sensible Anmeldedaten und umgebungsspezifische Konfigurationen sollten niemals übertragen werden:
.env
,.env.local
,.env.development
,.env.production
secrets.json
config.json
(Sensible Konfigurationsdateien)- Datenbank und Speicherdateien: Diese werden lokal erstellt und sollten nicht in die Versionskontrolle aufgenommen werden:
*.sqlite
,*.sqlite3
,*.db
(SQLite-Datenbankdateien)dump.rdb
(Redis-Datenbank-Dump)- CI/CD und Abdeckungsdateien: Testabdeckungsberichte und andere CI/CD-Artefakte sollten ignoriert werden:
coverage/
*.lcov
(Codeabdeckungsberichte).tox/
.pytest_cache/
(Python-Testdateien)
Du musst Git installieren? Folge unserer Schritt-für-Schritt-Anleitunge in diesem Git-Installationstutorial, um die Einrichtung schnell zu erledigen.
Lerne heute die Git-Grundlagen
Syntax von .gitignore
Wie bereits erwähnt, enthalten .gitignore
Dateien Muster, die mit den Dateinamen in deinem Repository abgeglichen werden, um festzustellen, ob sie ignoriert werden sollen oder nicht.
Grundlegende Syntax
Im Kern besteht die Datei .gitignore
aus Zeilen, die jeweils ein zu ignorierendes Muster darstellen. Muster können übereinstimmen:
- Besondere Dateien
- Dateitypen
- Verzeichnisse
Die Datei unterstützt auch Kommentare, die mit #
eingefügt werden können, sowie Leerzeilen, um die Lesbarkeit zu verbessern.
Hier ist ein Überblick über die Grundstruktur:
- Eine bestimmte Datei ignorieren: Du kannst den Dateinamen direkt auflisten, um ihn zu ignorieren.
secrets.txt
- Ein ganzes Verzeichnis ignorieren: Indem du ein
/
am Ende des Verzeichnisnamens hinzufügst, kannst du alles innerhalb dieses Verzeichnisses ignorieren.
logs/
- Alle Dateien eines bestimmten Typs ignorieren: Wildcards (
*
) können verwendet werden, um alle Dateien mit einer bestimmten Erweiterung zu ignorieren.
*.py
- Negation: Du kannst
!
verwenden, um ein Muster zu negieren und bestimmte Dateien oder Verzeichnisse explizit zu verfolgen, die sonst ignoriert werden würden.
*.txt # Ignores all .txt files
!readme.txt # Except for readme.txt
Wie man eine .gitignore-Datei erstellt und verwendet
Die Erstellung und Verwendung von .gitignore
ist ziemlich einfach. In diesem Abschnitt gehe ich die einzelnen Schritte durch.
Erstellen einer .gitignore-Datei
Schritt 1: Navigiere zum Stammverzeichnis deines Repositorys. Die Datei .gitignore
wird normalerweise im Stammverzeichnis eines Git-Projekts abgelegt. Öffne dein Terminal oder deine Kommandozeile und navigiere zum Stammverzeichnis deines Git-Repositorys:
cd /path/to/your/repo
Schritt 2: Erstelle die Datei .gitignore. Wenn du im Stammverzeichnis bist, erstelle die Datei .gitignore
mit einem beliebigen Texteditor oder indem du einen Befehl im Terminal ausführst, wie zum Beispiel:
touch .gitignore
Schritt 3: Füge Muster in die Datei ein. Öffne die Datei .gitignore
in einem Texteditor und füge die notwendigen Muster hinzu, um Dateien oder Verzeichnisse zu ignorieren. Jede Linie steht für ein anderes Muster.
Hier ist ein Beispiel für eine .gitignore
Datei, die häufig in einem Basisprojekt verwendet wird:
# Ignore node_modules and dependency directories
node_modules/
vendor/
# Ignore build artifacts
dist/
build/
*.log
# Ignore system-generated files
.DS_Store
Thumbs.db
# Ignore environment and secret files
.env
config.json
Wenn du die notwendigen Muster hinzugefügt hast, speichere die Datei. Git ignoriert diese Dateien jetzt automatisch, wenn du Änderungen bereitstellst oder überträgst.
Schritt 4: Übertrage die Datei in das Repository. Es ist wichtig, die Datei .gitignore
an das Repository zu übergeben, damit alle Mitarbeiter dieselben Ignorierregeln verwenden. So wird die Einheitlichkeit des Projekts für alle Beteiligten sichergestellt.
git add .gitignore
git commit -m "Add .gitignore file"
git push
Sobald die Datei .gitignore
übertragen ist, legst du gemeinsame Ignorierregeln für das gesamte Team fest.
Du willst Pushing und Pulling in Git beherrschen? In diesem Git Push- und Pull-Tutorial erfährst du, wie du deine Arbeit mit entferntene Repositories synchronisieren kannst.
Best Practices für die Verwendung von .gitignore
Das Anlegen einer .gitignore
Datei ist zwar ein einfacher Teil der Pflege eines sauberen Git-Repositorys, doch sollten einige Best Practices befolgt werden, um sicherzustellen, dass die Datei im Laufe der Zeit effektiv verwaltet wird.
Verwende eine globale .gitignore
Für Entwickler, die mit mehreren Projekten arbeiten, gibt es bestimmte Dateien, die du aus jedem Projektarchiv ausschließen möchtest, unabhängig vom Projekttyp.
Anstatt sie in die .gitignore
Datei jedes Projekts einzufügen, kannst du eine globale .gitignore
konfigurieren, die für alle Repositories auf deinem System gilt.
So konfigurierst du eine globale .gitignore
Datei:
- Erstelle eine
.gitignore_global
Datei:
touch ~/.gitignore_global
- Füge Muster für Dateien hinzu, die du global ignorieren willst, wie z.B.:
.DS_Store
*.log
/.vscode/
/.idea/
- Stelle Git so ein, dass es die globale
.gitignore
verwendet:
git config --global core.excludesfile ~/.gitignore_global
Vorhandene Vorlagen nutzen
Anstatt für jedes neue Projekt eine .gitignore
Datei von Grund auf neu zu erstellen, kannst du vorkonfigurierte .gitignore
Vorlagen für bestimmte Sprachen, Frameworks oder Umgebungen nutzen.
Eine der besten Quellen für diese Vorlagenist das offizielle .gitignore-Repository von GitHub, wo du .gitignore
Dateien findest, die auf Hunderte von Programmiersprachen und Frameworks zugeschnitten sind.
Überprüfe .gitignore regelmäßig
Wenn sich ein Projekt weiterentwickelt, müssen möglicherweise neue Dateien und Verzeichnisse in die Datei .gitignore
aufgenommen werden. Es ist wichtig, dass du deine Datei regelmäßig überprüfst und aktualisierst, damit sie den aktuellen Stand deiner Projekte widerspiegelt.
Einige Szenarien, in denen du die Datei .gitignore
aktualisieren musst, sind:
- Die Einführung neuer Werkzeuge oder Bibliotheken, die zusätzliche Dateien erzeugen (z. B. der Wechsel zu einem neuen Build-System).
- Wenn du Verzeichnisse umgestaltest oder neu organisierst, können neue Dateien entstehen, die ausgeschlossen werden sollten.
- Entfernen von veralteten Dateien oder Verzeichnissen, die nicht mehr Teil des Projekts sind.
Fehlersuche bei .gitignore
Auch wenn du eine .gitignore
Datei eingerichtet hast, kann es vorkommen, dass bestimmte Dateien verfolgt werden oder dass Muster nicht wie erwartet funktionieren. In diesem Abschnitt geht es um zwei häufige Fehlerquellen und wie du sie beheben kannst.
Lernpfad für bereits übertragene Dateien
Die Datei .gitignore
gilt nicht rückwirkend für bereits übertragene Dateien.
Wenn du einen Lernpfad zu .gitignore
hinzufügst, nachdem bestimmte Dateien bereits committed wurden, verfolgt Git sie weiter, auch wenn sie mit dem Muster in der Datei .gitignore
übereinstimmen.
Um das Verfolgen von Dateien, die bereits übertragen wurden, zu beenden, befolge diese Schritte:
- Entferne die Dateien aus dem Lernpfad von Git: Verwende den Befehl
git rm
, um sie aus dem Repository zu entfernen, sie aber in deinem Arbeitsverzeichnis zu behalten.
git rm --cached <file_or_directory_name>
- Bestätige die Änderungen: Nachdem du die Dateien aus dem Lernpfad von Git entfernt hast, musst du die Änderungen festschreiben, um sicherzustellen, dass die Dateien nicht mehr Teil der Versionskontrollhistorie sind.
git commit -m "Stop tracking ignored files"
- Pushe die Änderungen in das entfernte Repository: Zum Schluss schiebst du die Änderungen in das entfernte Repository, um sicherzustellen, dass die Dateien nicht mehr verfolgt werden.
git push
Nachdem du diese Schritte durchgeführt hast, hört Git auf, die Dateien zu verfolgen. Die übertragene Datei befindet sich weiterhin in deinem Arbeitsverzeichnis, wird aber bei zukünftigen Übertragungen auf der Grundlage deiner .gitignore
Muster ignoriert.
Sicherstellen, dass die Muster funktionieren
Manchmal stellst du fest, dass bestimmte Dateien, von denen du erwartet hast, dass sie ignoriert werden, immer noch im Git-Status auftauchen oder nachverfolgt werden.
Befolge diese Schritte, um sicherzustellen, dass deine .gitignore
Muster richtig funktionieren:
- Überprüfe den Status deiner Dateien: Mit dem Befehl
git status
kannst du sehen, welche Dateien von Git verfolgt werden. So kannst du überprüfen, ob deine ignorierten Dateien noch aufgelistet sind.
git status
- Achte darauf, dass das Muster korrekt ist: Überprüfe die Syntax deiner
.gitignore
Muster, um sicherzustellen, dass sie richtig formatiert sind. Zum Beispiel: - Stelle sicher, dass du den richtigen Verzeichnispfad verwendest (relativ zum Stammverzeichnis des Repositorys).
- Füge eine
/
hinzu, um bestimmte Verzeichnisse anzusteuern, damit nicht alle Dateien mit ähnlichen Namen verfolgt werden.
- Aktualisiere den Cache: Wenn du deine
.gitignore
Datei kürzlich aktualisiert hast und die Änderungen nicht übernommen werden, hält Git möglicherweise an seinem vorherigen Cache fest. Um den Cache zu aktualisieren, führst du den folgenden Befehl aus:
git rm -r --cached .
git add .
git commit -m "Refresh .gitignore"
- Prüfe auf Ausnahmen: Manchmal kann ein bestimmtes Muster in
.gitignore
durch ein spezifischeres Muster an anderer Stelle in der Datei überschrieben werden. Überprüfe deine Regeln, um sicherzustellen, dass es keine widersprüchlichen Muster gibt.
Du suchst nach einer schnellen Git-Referenz? Mit diesem Git-Spickzettel hast du die wichtigsten Befehle immer griffbereitertips.
Fazit
Eine .gitignore
Datei mag klein erscheinen, aber sie spielt eine große Rolle dabei, dein Git-Repository sauber und übersichtlich zu halten. Indem du unnötige Dateien - wie Abhängigkeiten, Build-Artefakte und vom System generierte Dateien - ignorierst, stellst du sicher, dass dein Projekt organisiert und frei von Unordnung bleibt.
In diesem Tutorial hast du gelernt, wie du eine .gitignore
Datei erstellst, Muster hinzufügst und Best Practices anwendest, um dein Repo effizient zu halten. Mit diesen Fähigkeiten vermeidest du Kopfschmerzen bei der Versionskontrolle und erleichterst die Zusammenarbeit für alle in deinem Team.
Wenn du deine Git-Kenntnisse vertiefen möchtest, findest du in Git Fundamentals einen strukturierten Lernpfad. Du kannst auch praktische Kurse wie Foundations of Git und Introduction to GitHub Concepts besuchen, um dir ein solides Verständnis der Versionskontrolle und der Arbeitsabläufe der Zusammenarbeit anzueignen!
Lerne heute die Git-Grundlagen
FAQs
Entfernt .gitignore Dateien, die bereits von Git verfolgt werden?
Nein, .gitignore
verhindert nur, dass neue Dateien getrackt werden. Wenn eine Datei bereits in der Versionskontrolle ist, wird sie durch das Hinzufügen zu .gitignore
nicht entfernt. Um den Lernpfad für eine Datei, die bereits übertragen wurde, zu beenden, musst du Folgendes verwenden:
git rm --cached filename
Dann bestätige die Änderungen.
Kann ich mehrere .gitignore-Dateien in einem Projekt haben?
Ja! Du kannst .gitignore
Dateien in verschiedenen Verzeichnissen innerhalb deines Projekts ablegen. Jeder gilt nur für Dateien in seinem Verzeichnis und Unterverzeichnissen.
Wie kann ich alle Dateien eines bestimmten Typs ignorieren?
Du kannst Wildcards verwenden. Zum Beispiel, um alle .log
Dateien zu ignorieren:
*.log
Dadurch werden alle Dateien mit der Erweiterung .log
ausgeschlossen.
Kann ich eine bestimmte Datei ignorieren, sie aber trotzdem für meine eigene Arbeit verfolgen?
Ja, aber du musst manuell sicherstellen, dass sie nicht übertragen wird. Eine Möglichkeit, dies zu tun, ist die Verwendung von git update-index --assume-unchanged filename
, einer vorübergehenden Lösung. Ein besserer Ansatz ist die Verwendung einer globalen .gitignore
Datei (siehe nächste Frage).
Was ist eine globale .gitignore-Datei, und wie richte ich sie ein?
Eine globale .gitignore
wird verwendet, um Dateien in allen Repositories auf deinem Rechner zu ignorieren. Dies ist nützlich für systemspezifische Dateien wie .DS_Store
oder Thumbs.db
. Um eine globale .gitignore
zu erstellen und zu konfigurieren:
git config --global core.excludesfile ~/.gitignore_global
Füge dann nach Bedarf Muster auf ~/.gitignore_global
hinzu.
Warum funktioniert meine .gitignore-Datei nicht?
Wenn .gitignore
eine Datei nicht ignoriert, überprüfe, ob die folgenden Probleme vorliegen:
- Die Datei ist bereits getrackt - du musst sie mit
git rm --cached filename
entfernen. - Das Muster
.gitignore
könnte falsch sein - überprüfe deine Syntax. - Es gibt eine widersprüchliche Regel: Git wendet die letzte übereinstimmende Regel an, also ist die Reihenfolge wichtig.
Kann ich ein Verzeichnis ignorieren, aber eine bestimmte Datei darin behalten?
Ja! Verwende eine Ausschlussregel. Zum Beispiel, um alles in einem Ordner zu ignorieren, außer keepme.txt
:
folder_name/*
!folder_name/keepme.txt
Was passiert, wenn zwei Teammitglieder unterschiedliche .gitignore-Dateien haben?
Wenn .gitignore
in das Repository übertragen wird, gelten für alle Teammitglieder die gleichen Regeln. Wenn jedoch eine Person .gitignore
lokal ändert, die Änderung aber nicht festschreibt, können sie unterschiedliche ignorierte Dateien haben. Am besten ist es, .gitignore
in einer vom Team vereinbarten Version zu halten.
Wie kann ich überprüfen, welche Dateien ignoriert werden?
Führe den folgenden Befehl aus, um zu sehen, was .gitignore
ausschließt:
git status --ignored
Oder, für eine ausführlichere Liste:
git check-ignore -v filename
Kann ich das Ignorieren einer Datei in .gitignore rückgängig machen?
Ja! Entferne die Datei von .gitignore
und verfolge sie dann erneut mit dem Lernpfad:
git add filename
Dann bestätige die Änderungen.
