Ignorieren von Dateiänderungen mit Git

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Git sollte nicht jede Datei in Ihrem Projekt verfolgen. Temporäre Dateien in Ihrer Entwicklungsumgebung, Testausgaben und Protokolle sind Beispiele für Dateien, die wahrscheinlich nicht nachverfolgt werden müssen.

Sie können verschiedene Mechanismen verwenden, um Git darüber zu informieren, welche Dateien in Ihrem Projekt nicht verfolgt werden sollen, und um sicherzustellen, dass Git keine Änderungen an diesen Dateien meldet. Für Dateien, die von Git nicht nachverfolgt werden, können Sie eine .gitignore- oder exclude-Datei verwenden. Für Dateien, die von Git verfolgt werden, können Sie Git anweisen, die Nachverfolgung zu beenden und Änderungen zu ignorieren.

In diesem Artikel werden folgende Vorgehensweisen behandelt:

  • Ignorieren von Änderungen an nicht nachverfolgten Dateien mithilfe einer .gitignore-Datei
  • Ignorieren von Änderungen an nicht nachverfolgten Dateien mithilfe einer exclude-Datei
  • Die Nachverfolgung einer Datei beenden und Änderungen mithilfe des Befehls git update-index ignorieren
  • Die Nachverfolgung einer Datei beenden und Änderungen mithilfe des Befehls git rm ignorieren

Verwenden einer .gitignore-Datei

Sie können Git anweisen, bestimmte Dateien in Ihrem Projekt nicht zu verfolgen, indem Sie eine .gitignore-Datei hinzufügen und konfigurieren. Einträge in einer .gitignore-Datei gelten nur für nicht nachverfolgte Dateien. Sie verhindern nicht, dass Git Änderungen an nachverfolgten Dateien meldet. Nachverfolgte Dateien sind Dateien, die committet wurden und in der letzten Git-Momentaufnahme vorhanden sind.

Jede Zeile in einer .gitignore-Datei gibt ein Dateisuchmuster relativ zum .gitignore-Dateipfad an. Die .gitignore-Syntax ist flexibel und unterstützt die Verwendung von Platzhaltern, um einzelne oder mehrere Dateien nach Name, Erweiterung und Pfad anzugeben. Git vergleicht .gitignore-Suchmuster mit den Dateien in Ihrem Projekt, um zu bestimmen, welche Dateien ignoriert werden sollen.

In der Regel fügen Sie dem Stammordner Ihres Projekts eine .gitignore-Datei hinzu. Sie können eine .gitignore-Datei jedoch zu jedem Projektordner hinzufügen, um Git mitzuteilen, welche Dateien in diesem Ordner und den jeweiligen Unterordnern bis zu jeder Schachtelungstiefe ignoriert werden sollen. Bei mehreren .gitignore-Dateien haben die Dateisuchmuster, die eine .gitignore-Datei in einem Ordner angibt, Vorrang vor den Mustern, die eine .gitignore-Datei in einem übergeordneten Ordner angibt.

Sie können eine .gitignore-Datei manuell erstellen und ihr Dateimustereinträge hinzufügen. Oder Sie können Zeit sparen, indem Sie eine .gitignore-Vorlage für Ihre Entwicklungsumgebung aus dem GitHub gitignore repo herunterladen. Einer der Vorteile der Verwendung einer .gitignore-Datei besteht darin, dass Sie Änderungen committen und mit anderen teilen können.

Hinweis

Visual Studio erstellt automatisch eine .gitignore-Datei für die Visual Studio-Entwicklungsumgebung, wenn Sie ein Git-Repository erstellen.

Visual Studio 2022 bietet eine Git-Versionskontrolle über das Git-Menü Git-Änderungen und die Kontextmenüs in Projektmappen-Explorer an. Visual Studio 2019, Version 16.8, bietet auch die Team Explorer-Git-Benutzeroberfläche. Weitere Informationen finden Sie auf der Registerkarte Visual Studio 2019 – Team Explorer.

Klicken Sie im Fenster Git-Änderungen mit der rechten Maustaste auf eine geänderte Datei, die Git ignorieren soll. Wählen Sie dann Dieses lokale Element ignorieren oder Diese Erweiterung ignorieren aus. Diese Menüoptionen sind für nachverfolgte Dateien nicht vorhanden.

Screenshot: Kontextmenüoptionen für geänderte Dateien im Fenster „Git-Änderungen“ in Visual Studio.

Mit der Option Dieses lokale Element ignorieren wird der .gitignore-Datei ein neuer Eintrag hinzugefügt und die ausgewählte Datei wird aus der Liste der geänderten Dateien entfernt.

Mit der Option Diese Erweiterung ignorieren wird der .gitignore-Datei ein neuer Eintrag hinzugefügt und alle Dateien mit derselben Erweiterung wie der ausgewählten Datei werden aus der Liste der geänderten Dateien entfernt.

Bei beiden Optionen wird eine .gitignore-Datei erstellt, wenn noch keine im Stammordner Ihres Repositorys vorhanden ist, und ein Eintrag hinzugefügt.

Bearbeiten einer gitignore-Datei

Jeder Eintrag in der .gitignore-Datei ist entweder ein Dateisuchmuster, das angibt, welche Dateien ignoriert werden sollen, ein Kommentar, der mit einem Nummernzeichen (#) beginnt oder eine leere Zeile (zur besseren Lesbarkeit). Die .gitignore-Syntax ist flexibel und unterstützt die Verwendung von Platzhaltern, um einzelne oder mehrere Dateien anhand des Namens, der Erweiterung und des Pfads anzugeben. Alle Pfade für Dateisuchmuster sind relativ zur .gitignore-Datei.

Nachstehend finden Sie einige Beispiele für häufige Dateisuchmuster:

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

Sobald Sie eine .gitignore-Datei ändern, aktualisiert Git die Liste der Dateien, die ignoriert werden.

Hinweis

Windows-Benutzer müssen einen Schrägstrich (/) als Pfadtrennzeichen in einer .gitignore-Datei verwenden, anstatt eines umgekehrter Schrägstrichs (\). Alle Benutzer müssen beim Angeben eines Ordners einen nachgestellten Schrägstrich hinzufügen.

Verwenden einer globalen .gitignore-Datei

Sie können eine .gitignore-Datei als globale Datei festlegen, die für alle lokalen Git-Repositorys gilt, um Dateien zu ignorieren. Verwenden Sie dazu den git config-Befehl wie folgt:

git config core.excludesfile <gitignore file path>

Mit einer globalen .gitignore-Datei wird sichergestellt, dass Git bestimmte Dateitypen, z. B. kompilierte Binärdateien, in keinem lokalen Repository committed. Dateisuchmuster in einer repositoryspezifischen .gitignore-Datei haben Vorrang vor Mustern in einer globalen .gitignore-Datei.

Verwenden einer exclude-Datei

Sie können der exclude-Datei im .git/info/-Ordner Ihres lokalen Repositorys auch Einträge für Dateisuchmuster hinzufügen. Die exclude-Datei teilt Git mit, welche nicht nachverfolgten Dateien ignoriert werden sollen. Sie verwendet dieselbe Syntax für Dateisuchmuster als eine .gitignore-Datei.

Einträge in einer exclude-Datei gelten nur für nicht nachverfolgte Dateien. Sie hindern Git nicht daran, Änderungen an festgeschriebenen Dateien zu melden, die es bereits verfolgt. In jedem Repository ist jeweils nur eine exclude-Datei vorhanden.

Da Git die exclude-Datei nicht committed oder pusht, können Sie sie problemlos verwenden, um Dateien auf Ihrem lokalen System zu ignorieren, ohne andere Personen zu beeinträchtigen.

Verwenden von „git update-index“ zum Ignorieren von Änderungen

Manchmal ist es praktisch, die Nachverfolgung einer lokalen Repositorydatei vorübergehend zu beenden, damit Git Änderungen an der Datei ignoriert. Sie können beispielsweise eine Einstellungsdatei für Ihre Entwicklungsumgebung anpassen, ohne zu riskieren, dass Änderungen committet werden. Dazu können Sie den git update-index-Befehl mit dem skip-worktree-Flag ausführen:

git update-index --skip-worktree <file path>

Um die Nachverfolgung fortzusetzen, führen Sie den git update-index-Befehl mit dem --no-skip-worktree-Flag aus.

Alternativ können Sie die Nachverfolgung einer Datei vorübergehend beenden, damit Git Änderungen an der Datei ignoriert, indem Sie den git update-index-Befehl mit dem assume-unchanged-Flag verwenden. Diese Option ist weniger effektiv als das Flag skip-worktree, da ein Git-Vorgang, pull der den Dateiinhalt ändert, das Flag assume-unchanged rückgängig machen kann.

git update-index --assume-unchanged <file path>

Um die Nachverfolgung fortzusetzen, führen Sie den git update-index-Befehl mit dem --no-assume-unchanged-Flag aus.

Verwenden der Git-Repositoryverwaltung zum Ignorieren von Änderungen

Einträge in einer .gitignore- oder exclude-Datei haben keine Auswirkungen auf Dateien, die Git bereits nachverfolgt. Git verfolgt Dateien, für die Sie zuvor einen Commit ausgeführt haben Um eine Datei dauerhaft aus dem Git-Snapshot zu entfernen, sodass Git sie nicht mehr verfolgt, ohne sie jedoch aus dem Dateisystem zu löschen, führen Sie die folgenden Befehle aus:

git rm --cached <file path>
git commit <some message>

Verwenden Sie dann einen .gitignore- oder exclude-Dateieintrag, um zu verhindern, dass Git Änderungen an der Datei meldet.

Nächste Schritte