Dateien mit Gitignore ignorieren

GitBeginner
Jetzt üben

Einführung

Bei der Softwareentwicklung kann sich Ihr Projektordner mit Dateien füllen, die nicht geteilt werden sollten. Dazu gehören beispielsweise:

  • Temporäre Dateien: Dateien, die von Ihrem Editor oder Betriebssystem erzeugt werden, zum Beispiel .DS_Store.
  • Build-Artefakte: Kompilierter Code, zum Beispiel .exe- oder .class-Dateien.
  • Protokolle: Dateien, die die Programmausführung dokumentieren, zum Beispiel debug.log.
  • Geheime Daten: API-Schlüssel oder Passwörter (COMMITTEN SIE DIESE NIEMALS!).

Git bietet dafür die Funktion .gitignore. Dabei handelt es sich um eine einfache Liste von Regeln nach dem Prinzip „nicht verfolgen“. Wenn eine Datei zu einer Regel in dieser Liste passt, lässt Git sie standardmäßig untracked.

Dieser Mechanismus legt Regeln für den Arbeitsbaum fest. Er teilt Git mit, welche untracked Dateien als normale Hintergrunddateien und nicht als mögliche Quelldateien behandelt werden sollen.

Es geht dabei nicht nur um Ordnung. Eine gute .gitignore hilft, unnötige Dateien, übergroße Repositories und versehentliche Commits von geheimen oder computerspezifischen Dateien zu vermeiden.

In diesem Lab werden Sie:

  1. Eine „Junk“-Datei erstellen, die ignoriert werden soll.
  2. Eine .gitignore-Datei konfigurieren.
  3. Überprüfen, dass Git die Junk-Datei erfolgreich ignoriert.

Eine Protokolldatei erstellen

Erstellen Sie zunächst eine Datei, die „Junk“-Daten darstellt. Stellen Sie sich vor, dass Ihre Anwendung bei jedem Start eine Protokolldatei erzeugt. Sie möchten diese Datei zu Debugging-Zwecken auf Ihrem lokalen Rechner behalten, sie aber weder mit dem Team teilen noch in der Versionshistorie speichern.

Wechseln Sie in das Projektverzeichnis:

cd ~/project

Erstellen Sie eine Datei mit dem Namen debug.log und einem Beispielinhalt:

echo "System started at $(date)" > debug.log

Überprüfen Sie, ob die Datei vorhanden ist:

ls

Wenn Sie jetzt git status ausführen, erkennt Git diese Datei als „Untracked“ und fordert Sie weiterhin auf, sie hinzuzufügen.

Das ist das normale Verhalten für Dateien, die Git erkannt hat, die aber noch nicht ignoriert werden. Git fragt damit im Grunde, ob die Datei Teil des Repositorys werden soll.

Die .gitignore-Datei erstellen

Damit Git bestimmte Dateien nicht mehr berücksichtigt, benötigen Sie eine spezielle Konfigurationsdatei mit dem Namen .gitignore.

Erstellen Sie die Datei im Stammverzeichnis Ihres Projekts:

touch .gitignore

Überprüfen Sie, ob die Datei erstellt wurde. Denken Sie daran: Sie ist verborgen, weil ihr Name mit einem Punkt beginnt.

ls -a

Die Datei .gitignore ist eine einfache Textdatei. Normalerweise sollten Sie die .gitignore-Datei selbst committen, damit alle Teammitglieder dieselben Regeln zum Ignorieren verwenden.

Das ist ein wichtiger Unterschied: Ignorierte Dateien sind normalerweise lokale Artefakte. Die .gitignore-Datei selbst ist dagegen in der Regel eine Projektkonfiguration und gehört zur Versionsverwaltung.

Regeln zum Ignorieren konfigurieren

Fügen Sie nun eine Regel hinzu, mit der alle Protokolldateien ignoriert werden.

Mit dem Platzhalter * können Sie „alles, was auf .log endet“ ausdrücken.

Fügen Sie das Muster *.log zu Ihrer .gitignore-Datei hinzu:

echo "*.log" > .gitignore

Überprüfen Sie den Inhalt der Datei:

cat .gitignore

Ausgabe:

*.log

Diese einzelne Zeile weist Git an: „Ignoriere jede Datei in diesem Verzeichnis und in jedem Unterverzeichnis, deren Name auf .log endet.“

Regeln zum Ignorieren basieren auf Mustern und gelten nicht nur für eine einzelne Datei. Deshalb kann eine kurze .gitignore-Datei viele Kategorien erzeugter oder unerwünschter Dateien verwalten.

Den Ignorierstatus überprüfen

Testen Sie nun, ob die Regel funktioniert.

Führen Sie git status aus:

git status

Analysieren Sie die Ausgabe:

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    .gitignore

Moment! Wo ist debug.log?

Die Datei erscheint nicht mehr in der Liste. Das bedeutet, dass Git sie erfolgreich ignoriert. Git informiert Sie nur noch über .gitignore selbst, die Sie später committen sollten. debug.log ist für Git unsichtbar.

Das ist der praktische Unterschied zwischen Untracked und Ignored: Untracked Dateien werden weiterhin zum Hinzufügen vorgeschlagen, während ignorierte Dateien absichtlich von dieser Aufmerksamkeit ausgeschlossen werden.

Wenn Sie ganz sicher sein möchten, können Sie mit dem Befehl check-ignore fragen: „Warum wird diese Datei ignoriert?“

git check-ignore -v debug.log

Ausgabe:

.gitignore:1:*.log debug.log

Das bedeutet: „Die Datei debug.log wird aufgrund der Regel *.log in Zeile 1 der .gitignore-Datei ignoriert.“

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Ihr Repository sauber halten.

Wichtige Erkenntnisse:

  1. .gitignore: Eine Textdatei mit Mustern, die Git ignorieren soll.
  2. Platzhalter: Verwenden Sie *, um mehrere Dateien zu erfassen, zum Beispiel *.log.
  3. Untracked im Vergleich zu Ignored: Eine ignorierte Datei wird für Git-Versionen so behandelt, als würde sie nicht existieren, obwohl sie weiterhin auf Ihrer Festplatte vorhanden ist.

Diese einfache Datei ist sehr leistungsfähig. Sie verhindert, dass Sie versehentlich temporäre Dateien, Binärdateien oder vertrauliche Schlüssel committen, und hält Ihr Projekt professionell und sicher.