Vor- und Nachteile von .git/info/exclude und .gitignore

Datum: Montag, 5. Dezember 2022

Tag(s): git Tutorial

In jedem Git-Repository gibt es die Möglichkeit, Dateien oder Verzeichnisse von der Verfolgung auszuschließen. Dies kann entweder über die Datei .gitignore oder über .git/info/exclude erfolgen. Beide Methoden haben ihre Vor- und Nachteile, die im Folgenden erläutert werden sollen.

Unterschiede

Zunächst einmal ist die Datei .gitignore die offizielle und empfohlene Methode, um Dateien und Verzeichnisse von der Verfolgung auszuschließen. Sie kann entweder global für das gesamte Repository oder lokal für bestimmte Verzeichnisse erstellt werden. Ein großer Vorteil der .gitignore-Datei ist, dass sie Teil des Repositorys ist und somit auf jedem Computer, auf dem das Repository cloniert wird, verfügbar ist. Dies erleichtert die Zusammenarbeit in Teams, da alle Mitglieder wissen, welche Dateien ignoriert werden sollen.

Ein weiterer Vorteil der .gitignore-Datei ist, dass sie von Git bereitgestellte Regeln enthält, die häufig verwendete Dateien und Verzeichnisse automatisch ausschließen. Zum Beispiel werden in der Regel Dateien wie .DS_Store (von macOS erstellte Dateien) oder node_modules (Verzeichnis mit installierten Node.js-Modulen) automatisch ignoriert. Dies spart Zeit und erleichtert die Verwaltung des Repositorys.

Allerdings gibt es auch Nachteile bei der Verwendung der .gitignore-Datei. Zum einen kann es schwierig sein, die Regeln für das Ignorieren von Dateien und Verzeichnissen zu verstehen und korrekt anzuwenden. Es ist einfach, eine Regel zu vergessen oder falsch zu schreiben, was dazu führen kann, dass unerwünschte Dateien im Repository verbleiben. Zum anderen kann die .gitignore-Datei zu groß und unübersichtlich werden, insbesondere in Repositories mit vielen Dateien und Verzeichnissen.

Die Datei .git/info/exclude bietet eine Alternative zur .gitignore-Datei. Im Gegensatz zur .gitignore-Datei ist sie nicht Teil des Repositorys und wird daher nicht an andere Mitglieder des Teams weitergegeben.

Ein weiterer Vorteil von .git/info/exclude ist, dass es möglich ist, Regeln für Unterverzeichnisse zu definieren. Mit der .gitignore-Datei ist es hingegen nur möglich, Regeln für das aktuelle Verzeichnis und dessen Unterverzeichnisse zu definieren.

Ein Nachteil von .git/info/exclude ist jedoch, dass es nicht sehr gut unterstützt wird. Viele Git-Tools ignorieren es einfach, was bedeutet, dass es schwierig sein kann, es in einem Teamumfeld zu verwenden, in dem verschiedene Tools verwendet werden.

Verwendung von .git/info/exclude

Um .git/info/exclude zu verwenden, müssen Sie zunächst eine Datei mit dem Namen “.git/info/exclude” im Stammverzeichnis Ihres Git-Repositories erstellen. Sie können diese Datei entweder manuell erstellen oder über die Git-Befehlszeile mit dem Befehl touch .git/info/exclude erstellen.

Sobald die Datei erstellt ist, können Sie die Dateien und Verzeichnisse aufführen, die Sie aus Ihrem Repository ausschließen möchten. Dies können Sie entweder manuell in der Datei eingeben oder über die Git-Befehlszeile mit dem Befehl echo <datei-oder-verzeichnis> tun.

Zum Beispiel, wenn Sie die Datei temp.txt und das Verzeichnis node_modules aus Ihrem Repository ausschließen möchten, könnten Sie die folgenden Befehle verwenden:

echo "temp.txt" >> .git/info/exclude
echo "node_modules" >> .git/info/exclude

Dies fügt die angegebenen Dateien und Verzeichnisse zu .git/info/exclude hinzu und Git wird sie beim nächsten Commit und Push ignorieren.

Wenn Sie eine Datei oder ein Verzeichnis später wieder hinzufügen möchten, können Sie die Datei .git/info/exclude öffnen und die entsprechende Zeile entfernen. Git wird dann beim nächsten Commit und Push wieder auf die geänderten Dateien achten.

Es ist wichtig zu beachten, dass .git/info/exclude nur für das lokale Repository gilt. Wenn Sie Ihr Repository mit anderen Benutzern teilen, werden sie immer noch Zugriff auf die ausgeschlossenen Dateien haben. Um sie auch für andere Benutzer auszuschließen, müssen Sie .gitignore verwenden.

.gitignore_global

.gitignore_global ist eine weitere Möglichkeit, um Dateien und Verzeichnisse aus Git-Repositories auszuschließen. Im Gegensatz zu .gitignore und .git/info/exclude ist .gitignore_global jedoch global und wird für alle Repositories verwendet, die auf demselben Computer erstellt werden.

Um .gitignore_global zu verwenden, müssen Sie zunächst eine Datei mit dem Namen “.gitignore_global” im Home-Verzeichnis Ihres Computers erstellen. Sie können diese Datei entweder manuell erstellen oder über die Git-Befehlszeile mit dem Befehl touch ~/.gitignore_global erstellen.

Sobald die Datei erstellt ist, können Sie die Dateien und Verzeichnisse aufführen, die Sie aus allen Git-Repositories auf Ihrem Computer ausschließen möchten. Dies können Sie entweder manuell in der Datei eingeben oder über die Git-Befehlszeile mit dem Befehl echo <datei-oder-verzeichnis> tun.

Zum Beispiel, wenn Sie die Datei “temp.txt” und das Verzeichnis “node_modules” aus allen Git-Repositories auf Ihrem Computer ausschließen möchten, könnten Sie die folgenden Befehle verwenden:

echo "temp.txt" >> ~/.gitignore_global
echo "node_modules" >> ~/.gitignore_global

Dies fügt die angegebenen Dateien und Verzeichnisse zu .gitignore_global hinzu und Git wird sie beim nächsten Commit und Push in allen Repositories ignorieren.

Wenn Sie eine Datei oder ein Verzeichnis später wieder hinzufügen möchten, können Sie die Datei .gitignore_global öffnen und die entsprechende Zeile entfernen. Git wird dann beim nächsten Commit und Push in allen Repositories wieder auf die geänderten Dateien achten.

Ein Vorteil von .gitignore_global ist, dass es für alle Repositories auf Ihrem Computer gilt. Sie müssen die Datei nicht in jedem einzelnen Repository erstellen und pflegen. Ein Nachteil ist jedoch, dass es schwieriger zu verwalten ist, da Sie nicht individuell für jedes Repository anpassen können.