Ich habe die Datei erstellt .gitignore_global
und in mein Git-Installationsverzeichnis gestellt. Wenn ich den Befehl ausführe:
git config --global core.excludesfile ~/.gitignore
Die Regeln in der Ignorierdatei werden nicht auf meine Commits angewendet.
Wenn ich die Datei umbenenne .gitignore
und in mein Projektstammverzeichnis lege, gelten die Regeln.
Was ist hier falsch?
Antworten:
Vielleicht müssen Sie Folgendes tun:
Und um Kaffee zu trinken.
quelle
gitignore
Datei funktioniert nur für nicht verfolgte Dateien, nicht für diejenigen, die zuvor hinzugefügt wurdenIch dachte, ich würde mich darauf einlassen. Es gibt noch einen weiteren Grund, warum die globale Ignorierdatei anscheinend nicht funktioniert. Ich glaube nicht, dass dies in früheren Antworten behandelt wurde. Es ist so offensichtlich, dass es natürlich sehr leicht zu übersehen ist.
Es ist so, dass Git nur neue Dateien ignoriert . Wenn die Datei bereits von git verfolgt wird, wird sie von git natürlich nicht ignoriert! Welche Muster in einer
gitignore
oder einerexclude
Datei auch immer nicht zutreffen .Das macht Sinn. Warum sollte Git Änderungen an Dateien ignorieren wollen, die es bereits verfolgt? Wenn die Datei ignoriert werden soll, müssen Sie git zuerst anweisen, sie nicht zu verfolgen, und dann git ignorieren, wie im Handbuch beschrieben. Informationen zum Aufheben der Verfolgung von Dateien finden Sie in dieser Antwort .
Dies alles führt mich zu der Frage, ob es möglich ist, Änderungen an verfolgten Dateien zu ignorieren. Wieder liefert Git. Diese Antwort; Git: Verfolgen von verfolgten Dateien gibt uns den Befehl (durch
file
die Datei ersetzen, die Sie ignorieren möchten):git update-index --assume-unchanged file
Zum Schluss noch ein paar zusätzliche Informationen zum Debuggen von Git Ignorieren.
Die gitignore (5) Handbuchseite sagt uns:
Das ist also neu und ersetzt das vorherige
~/.gitignore_global
erwähnten.Als nächstes, und das ist wirklich nützlich, haben wir ab 1.8.2 einige ausgezeichnete Debugging-Tools. Schauen Sie sich an:
Git lernt besser zu ignorieren - Neu in 1.8.2
Dies zeigt, wie Sie mit dem neuen
check-ignore
Flag überprüfen können, ob git Ihre Muster erfolgreich ignoriert, zgit check-ignore bin/a.dll --verbose
quelle
git update-index --assume-unchanged file
war genau das, wonach ich gesucht habe, danke!Ich fand das, als ich das Folgende definiert hatte
global core.excludesfile
:es hat nicht funktioniert. Ändern Sie es so, dass die
$HOME
Variable nicht wie folgt verwendet wird:es fing sofort an zu arbeiten. Hoffe das hilft jemand anderem.
Zu Ihrer Information:
quelle
Hinweis: ab git1.7.12 (August 2012) :
Wenn Sie also eine
$HOME/.config/git/attributes
Datei erstellen , müssen Sie nicht einmal Ihrecore.excludesfile
Einstellungen vornehmen.quelle
Die Datei muss sich in Ihrem Home-Verzeichnis befinden. Unter Windows bedeutet dies normalerweise: C: \ Dokumente und Einstellungen \ [Benutzer].
Unter Linux ist es: / home / [Benutzer]
quelle
Ich hatte dieses Problem, weil ich ursprünglich 'git config core.excludefiles' ohne --global und mit einem falschen Wert aufgerufen hatte und daher die Eigenschaft lokal gespeichert hatte. Es sieht so aus, als hätte die lokale Eigenschaft die globale Eigenschaft (die den richtigen Wert hatte) versteckt und sie vollständig ignoriert.
quelle
Ein weiterer Grund, warum ein globales Git-Ignorieren möglicherweise nicht funktioniert: unsichtbare Zeichen im Pfad.
Ich fand nur heraus, dass dies mein Problem war, als ich die Warnmeldung von git-check-ignore in die Adressleiste von Chrome einfügte, wo sie zum Glück sichtbar wurde:
(Es war auf dem Terminal nicht sichtbar. Und dies könnte ein langes Kaninchenloch zum Debuggen gewesen sein ... 😅)
quelle
Ich hatte das gleiche Problem (unter Windows). Am Ende überprüfte ich meine
~/.gitconfig
Datei und stellte fest, dass meine aufexcludesfile
Folgendes eingestellt war:aber es hätte sein sollen:
Nachdem ich es geändert hatte, funktionierte alles so, wie es sollte.
quelle
Außerdem hatte ich eine lustige Sache mit der Codierung dieser Datei. Irgendwie hat mein Windows 10 (mit Powershell) die Datei mit der Codierung "UTF-16 LE" erstellt und irgendwie konnte Git damit nicht umgehen. Wenn ich die Codierung auf einen viel vernünftigeren Wert von buchstäblich allem anderen ändere, hat es funktioniert.
quelle
Ein weiterer schwer nachvollziehbarer Grund, warum .gitignore (_global) nicht funktioniert, könnten führende Leerzeichen in den Zeilen sein. Die Datei verzeiht keine führenden Leerzeichen. Stellen Sie also sicher, dass jede Zeile Ihrer Datei keine enthält, es sei denn, es handelt sich um eine leere Zeile. Ich brauchte eine Weile, um es herauszufinden.
Ich füge nur meine zwei Cent hinzu.
quelle
Ich habe kürzlich einen Fehler gemacht und den folgenden Befehl ausgeführt.
git config core.excludesfile tags
Dadurch wurde der Ausschlussdateipfad in eine lokale Datei im aktuellen Repository geändert. Diese Konfiguration wurde in die lokale Konfigurationsdatei unter geschrieben.git/config
, um zu beheben, dass ich die.git/config
Datei gerade geöffnet und die Zeile gelöscht habeexcludesfile tags
und alles ist wieder normal.quelle