Vor- und Nachteile von .git/info/exclude und .gitignore
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.
Kommentare
Sie können Ihr Fediverse-Konto (z. B. Mastodon und viele andere) verwenden, um auf diesen Beitrag zu antworten.