Globales Git ignorieren

841

Ich möchte Git so einrichten, dass bestimmte Dateien global ignoriert werden.

Ich habe .gitignoremeinem Home-Verzeichnis ( /Users/me/) eine Datei hinzugefügt und die folgende Zeile hinzugefügt:

*.tmproj

Aber es ignoriert diese Art von Dateien nicht, eine Idee, was ich falsch mache?

Milder Flaum
quelle
7
Vielleicht möchten Sie auch die Vorschläge von GitHub zum Ignorieren lesen - help.github.com/articles/ignoring-files ; sie haben ein Repository von gemeinsamen Muster ignorieren
drzaus
6
Möglicherweise möchten Sie auch nur einen .gitignore in einzelnen Projekten verwenden. Andernfalls müssen Sie, wenn Sie (oder eine andere Person) das Projekt auf einem neuen System klonen, jedes Mal die globale Ausschlussdatei und Konfiguration neu erstellen.
Stan Kurdziel
25
Ignorierbare Dateien, die das Projekt erstellt, sollten sich in der .gitignore-Datei des Projekts befinden. Ignorierbare Dateien, die auf Ihrem Computer erstellt werden, sollten sich in der globalen .gitignore-Datei befinden (z. B. Editor- / IDE-temporäre Dateien und dergleichen).
Pylinux
2
Verzeichnisse der virtuellen Python-Umgebung sind ein häufiger Anwendungsfall für Einträge in meiner globalen oder lokalen Ausschlussdatei.
Eintopf
10
@Pylinux Laut git-scm können persönliche IDE- und Workflow-spezifische Inhalte in die nicht verfolgte Datei .git/info/excludeim Repo aufgenommen werden, sodass sie nicht unbedingt in die globale Datei aufgenommen werden müssen. Außerdem ist die standardmäßige und automatische globale Gitignore-Datei $HOME/.config/git/ignore.
Acumenus

Antworten:

1422

Sie müssen Ihre globale core.excludesfileKonfigurationsdatei so einrichten, dass sie auf diese globale Ignorierdatei verweist.

z.B

* nix oder Windows Git Bash:

git config --global core.excludesfile '~/.gitignore'

Windows cmd:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

Für Windows wurde der Speicherort festgelegt C:\Users\{myusername}\.gitignore. Sie können überprüfen, ob der Konfigurationswert korrekt ist, indem Sie Folgendes tun:

git config --global core.excludesfile

Das Ergebnis sollte der erweiterte Pfad zu Ihrem Benutzerprofil sein .gitignore. Stellen Sie sicher, dass der Wert nicht die nicht erweiterte %USERPROFILE%Zeichenfolge enthält.

Wichtig : Mit den obigen Befehlen wird nur der Speicherort der Ignorierdatei festgelegt, die git verwendet. Die Datei muss noch manuell an diesem Speicherort erstellt und mit der Ignorierliste gefüllt werden. (aus Muruges Kommentar)

Weitere Informationen zum Befehl finden Sie unter https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

CB Bailey
quelle
2
Solange es nicht in Ihrem HEADoder Ihrem Index enthalten ist, sollte es keinen Unterschied machen, ob die Datei einmal verfolgt wurde oder nicht. Es kann hilfreich sein , wenn Sie die Ausgabe hinzufügen git status, git config core.excludesfileauf Ihre Frage.
CB Bailey
2
Kann ich #am Anfang von Zeilen ~/.gitignoreinnerhalb der globalen Ignorierdatei Kommentare hinzufügen?
Dror
9
Neuere Versionen des offiziellen Git Windows-Toolkits verwenden stattdessen die * nix-Syntax. Wenn diese Zeile nicht funktioniert, versuchen Sie stattdessen * nix.
Andy Jones
9
Ich konnte dies mit der %USERPROFILE%Variablen nicht zum Laufen bringen. Ich musste den vollständigen Pfad zur Datei mit * nix-Verzeichnistrennzeichen eingeben. zB core.excludesfile C: /Users/User/.gitignore
Vince
21
Mit der Variablen% USERPROFILE% konnte es nicht funktionieren. Ich musste git config --global core.excludesfile '~ / .gitignore' in Windows verwenden, um es auf den Speicherort C: / users / {myusername} /. Gititore zu setzen. Außerdem legt der obige Befehl nur den Speicherort der Ignorierdatei fest, die git verwendet. Die Datei muss noch manuell an diesem Speicherort erstellt und mit der Ignorierliste gefüllt werden.
Muruge
301

Bevor Sie die globale Ausschlussdatei neu konfigurieren, möchten Sie möglicherweise mit diesem Befehl überprüfen, für welche Datei sie derzeit konfiguriert ist:

git config --get core.excludesfile

In meinem Fall sah ich beim Ausführen, dass meine globale Ausschlussdatei für konfiguriert war

~ / .gitignore_global
und dort waren schon ein paar Dinge aufgelistet. Im Fall der gegebenen Frage kann es daher sinnvoll sein, zuerst nach einer vorhandenen Ausschlussdatei zu suchen und die neue Dateimaske hinzuzufügen.

Yanni
quelle
2
das funktioniert super. Richten Sie Ihre globale Gitignore-Datei wie gewohnt ein. ein Eintrag pro Zeile.
Maarten Hartman
237

Obwohl andere Antworten korrekt sind, setzen sie den globalen Konfigurationswert, während es einen Standard-Git-Speicherort für die globale Git-Ignorierdatei gibt:

* nix:

~/.config/git/ignore

Windows:

%USERPROFILE%\git\ignore

Möglicherweise müssen Sie ein gitVerzeichnis und eine ignoreDatei erstellen, aber dann können Sie Ihre globalen Ignorierungen in diese Datei einfügen und fertig!

Quelle

In welcher Datei ein Muster abgelegt werden soll, hängt davon ab, wie das Muster verwendet werden soll.

  • Muster, die ein Benutzer von Git in allen Situationen ignorieren lassen möchte (z. B. Sicherungs- oder temporäre Dateien, die vom Editor des Benutzers der Wahl generiert wurden), werden im Allgemeinen in eine Datei eingegeben, die core.excludesFileim Benutzer angegeben ist ~/.gitconfig. Der Standardwert ist $ XDG_CONFIG_HOME / git / ignore. Wenn $ XDG_CONFIG_HOME entweder nicht gesetzt oder leer ist, wird stattdessen $ HOME / .config / git / ignore verwendet.
Steve Jorgensen
quelle
1
Das ist toll; Ich wusste nichts davon ... aber ist das nicht eine generierte Datei? Kann es beim Aktualisieren / Neuinstallieren überschrieben werden?
Danielsdesk
1
Ich glaube, die Datei wird durch Ausführen bestimmter gitBefehle erstellt / geändert . Da es sich um eine Einstellungsdatei im Verzeichnis jedes Benutzers handelt, denke ich nicht, dass sie jemals überschrieben werden sollte.
Steve Jorgensen
1
Ich bin damit einverstanden, dass dies die akzeptierte Antwort sein sollte, aber ich habe dies nicht in einem Hilfeartikel ( help.github.com/articles/ignoring-files ) gefunden
AVProgrammer
1
@AVProgrammer Ich habe gerade die Antwort bearbeitet, um die Änderung in der Organisation des Quelldokuments widerzuspiegeln.
Steve Jorgensen
7
Sieht aus wie unter Windows ist der Pfad auch ~/.config/git/ignore.
Suriv
40

So erstellen Sie einen globalen Gitignore von Grund auf neu:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. Die erste Zeile wechselt in das Verzeichnis C:/Users/User
  2. Danach erstellen Sie eine leere Datei mit der .gitignore_globalErweiterung
  3. Und schließlich setzen Sie das globale Ignorieren auf diese Datei.
  4. Dann sollten Sie es mit einer Art Notizblock öffnen und die erforderlichen Ignorierregeln hinzufügen.
Phoera
quelle
18

Von hier aus .

Wenn Sie in Ihrem Repo eine Datei mit dem Namen .gitignore erstellen, verwendet git deren Regeln, wenn Sie sich die zu festschreibenden Dateien ansehen. Beachten Sie, dass git eine Datei nicht ignoriert, die bereits verfolgt wurde, bevor dieser Regel eine Regel hinzugefügt wurde, um sie zu ignorieren. In einem solchen Fall muss die Datei nicht mehr verfolgt werden, normalerweise mit:

git rm --cached filename

Ist es dein Fall?

LaGrandMere
quelle
Ich versuche global zu ignorieren, was nicht passiert !!
Mild Fuzz
@MildFuzz unter Linux core.excludesfilescheint die Datei anders interpretiert zu werden als eine .gitignoreDatei. Wenn Sie ein gesamtes Verzeichnis ignorieren möchten, geben Sie einfach den Namen des Verzeichnisses wie .vscode/anstelle von.vscode/*
Aspiring Dev
11

Wenn Sie ein Unix-System verwenden, können Sie Ihr Problem mit zwei Befehlen lösen. Wobei die erste Konfiguration konfiguriert und die zweite Datei mit einer zu ignorierenden Datei ändert.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
Purkhalo Alex
quelle
10
  1. Erstellen Sie eine Gitignore-Datei in Ihrem Home-Verzeichnis
touch ~/.gitignore
  1. Fügen Sie Dateien hinzu ( Ordner werden nicht erkannt )

Beispiel

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Überprüfen Sie, ob ein Git bereits einen globalen Gitignore hat
git config --get core.excludesfile
  1. Sagen Sie git, wo sich die Datei befindet
git config --global core.excludesfile '~/.gitignore'

Voila !!

Prerak Mann
quelle
"Ordner werden nicht erkannt" - Das ist einfach falsch, Ordner funktionieren
einwandfrei
7

Denken Sie daran, dass Sie den Befehl ausführen

git config --global core.excludesfile '~/.gitignore'

richtet nur die globale Datei ein, erstellt sie jedoch NICHT. Überprüfen Sie unter Windows Ihr Benutzerverzeichnis auf die .gitconfigDatei und bearbeiten Sie sie nach Ihren Wünschen. In meinem Fall ist es so:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
Maus md
quelle
3

Ich kann eine .tmprojDatei ignorieren , indem ich entweder .tmprojoder *.tmprojin meine /users/me/.gitignore-globalDatei einbinde.

Beachten Sie, dass der Dateiname .gitignore-globalnicht lautet .gitignore. Es hat nicht funktioniert, indem .tmprojoder *.tmprojin eine Datei aufgenommen wurde, die .gitignoreim /users/meVerzeichnis aufgerufen wurde .

Sri Sankaran
quelle
4
Es spielt keine Rolle, wie Sie Ihre globale Ignorierdatei nennen, solange sie mit Ihrer core.excludesfileKonfiguration übereinstimmt .
CB Bailey
Ah! Guter Punkt @CharlesBailey. Dies kann jedoch etwas sein, das der Autor überprüfen möchte. Der Grund, warum die .tmprojDatei nicht ignoriert wird, kann sein, dass der Benutzer dies excludesfilenicht ist .gitignore.
Sri Sankaran
Ich denke, er dachte, der Benutzer wäre klug genug, um es zu realisieren.
WORMSS
2

Sie sollten hierfür eine Ausschlussdatei erstellen. Schauen Sie sich diesen Kern an, der ziemlich selbsterklärend ist.

Um Ihre Frage zu beantworten, müssen Sie die .tmprojDatei möglicherweise entweder mit git rm --cached path/to/.tmprojoder git addund commitIhrer .gitignoreDatei deindizieren (falls Sie sie bereits zum Index hinzugefügt haben) .

Nic
quelle
Ich versuche dies global zu tun, nicht nur per Repo
Mild Fuzz
Ja, das habe ich im Kern verlinkt. Die ursprüngliche Frage hat mich ein wenig verwirrt. Hast du das gemacht git rm --cached?
Nic
Ja, habe das versucht. Mir scheint, ich habe alle empfohlenen Ratschläge befolgt! Was vermisse ich?
Mild Fuzz
Wie vorgeschlagen, würde ich Ihren Git-Status hinzufügen und Informationen zur Frage ausschließen :)
Nic
2

auf Windows - Subsystem für Linux Ich hatte von an das Subsystem Wurzel navigieren cd ~/dann touch .gitignoreund dann die globale gitignore Konfiguration dort zu aktualisieren.

Ich hoffe es hilft jemandem.

bboydflo
quelle
0

Wenn Sie VSCODE verwenden, können Sie diese Erweiterung erhalten, um die Aufgabe für Sie zu erledigen. Es überwacht Ihren Arbeitsbereich jedes Mal, wenn Sie Ihre Arbeit speichern, und hilft Ihnen dabei, die Dateien und Ordner, die Sie in Ihren vscode settings.json ignoreit (vscode-Erweiterung) angegeben haben, automatisch zu ignorieren.

Markdomäne
quelle