.gitignore ignoriert von Git
Meine .gitignore
- Datei zu sein scheint, wird ignoriert Git - könnte die .gitignore
Datei beschädigt sein? Welche Datei-format, Sprach-oder Kultur nicht Git erwarten?
Meine .gitignore
:
# This is a comment
debug.log
nbproject/
Ausgabe von git status
:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# debug.log
# nbproject/
nothing added to commit but untracked files present (use "git add" to track)
Möchte ich debug.log
und nbproject/
nicht erscheinen, um in die unberührte Dateien Liste.
Wo sollte ich beginnen, dieses Problem zu beheben?
- Stellen Sie sicher, dass Ihre
.gitignore
Datei verwendetANSI
oderUTF-8
Codierung. Wenn es verwendet etwas anderes wieUnicode BOM
es ist möglich, dass Git kann die Datei nicht Lesen. - Möglich, Duplikat der Wie man Git "vergessen" über eine Datei, die wurde verfolgt, aber ist jetzt in .gitignore?
- das war genau das problem auf meinem Rechner (Windows). Ich hat verwendet
echo "file" > .gitignore
in der PowerShell, die Datei hatte eine UCS-2-Codierung! git rm --cached debug.log nbproject/
- Warum der erste Kommentar hier ist nicht die Antwort über mir ist
- Lustig, das war die Antwort auf meine Frage (ich bin op), obwohl es ist eine Antwort, die viel weiter unten.
- Ah, ich sehe es jetzt, es überrascht mich immer noch, dass eine so einfache und auf den Punkt beantworten, ist begraben, wie eine Kommentar-oder, dass die tatsächlichen akzeptiert man dort unten ist. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Selbst wenn Sie nicht verfolgt, die Dateien so weit, Git scheint in der Lage zu "wissen", über die Sie auch nach dem hinzufügen zu
.gitignore
.HINWEIS: Ersten commit aktuelle änderungen, oder Sie werden Sie verlieren.
Dann führen Sie die folgenden Befehle aus den obersten Ordner des Git-repository:
.
in diese Antwort mit dem Pfad-Namen in derrm
undadd
Befehle..
Wenn es scheint, wie Git nicht bemerkt die änderungen, die Sie gemacht, um Ihre
.gitignore
- Datei, die Sie möchten möglicherweise überprüfen Sie die folgenden Punkte:.gitignore
Datei, die möglicherweise stören mit Ihrem lokalenWenn Sie etwas hinzufügen in eine .gitignore-Datei, versuchen Sie dies:
Wenn Sie etwas entfernen, aus einem .gitignore-Datei, und die oben genannten Schritte nicht funktionieren, versuchen Sie, diese:
git rm -r --cached .
für mich gearbeitetBehoben. OK, ich habe die .gitignore-Datei in Notepad auf Windows und es funktionierte nicht. Wenn ich angesehen .gitignore-Datei auf Linux sah es so organisiert Kauderwelsch - vielleicht den Editor geschrieben hatte, aus Unicode statt ASCII oder was auch immer 8-bit ist.
Also schrieb ich die Datei auf meiner Linux-box, und wenn ich zog es wieder in Windows funktioniert es einwandfrei! Hurra!
Encoding > Encode in ANSI
.Ohne Zugabe von anderen Begehen zu Ihrem Projekt, eine Zeile wird genug sein, um
.gitignore
funktioniert, wie es soll:Dies wird entfernen Sie Sie aus dem repository, aber noch halten Sie körperlich. Im Klartext, es löscht alle änderungen im Zusammenhang mit Ihnen, und auch nicht zu verfolgen, deren Veränderung in der Zukunft zu Begehen. Sie finden möglicherweise eine bessere Erklärung hier.
git rm -r --cached someFile.php
und es funktionierte wie ein Charme 🙂Andere Ursache für dieses Problem ist Leerzeichen oder tabs vor der Anweisung:
Beispiel:
Und wie schon im Kommentar unter einem Leerzeichen können ein Problem sein, wie gut:
*.txt # Tex files
. Aber git versteht: "Ignorieren Sie die Dateien mit der Endungtxt
"Bemerkte ich, dass die Codierung der
.gitignore
Wirkung--wenn die Datei Unicode, wurde es ignoriert, wenn es ASCII, war es nicht.Prozess:
PS> git status
.gitignore
's encoding:PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
touch .gitignore
undecho ".db" >> .gitignore
route via powershell. Ich fand, dass dieecho ".db" >> .gitignore"
war die Einstellung der Datei-Kodierung UCS-2 LE-Stückliste, die eine schnelle Konvertierung in ASCII und die gitignore zu arbeiten begonnen.Als mit den anderen Lösungen, Begehen zuerst und sich bewusst sein, dass Sie wird verlieren alle nicht übergebenen änderungen.
Hatte ich bessere Ergebnisse mit diesem:
Beachten Sie, dass der status nicht haben sollte, dass geänderte Dateien jetzt.
Alle, die Antworten hier sind eigentlich workarounds. Sie brauchen, um das .gitignore-Datei vor Sie laufen
git init
. Ansonstengit
wird nie wissen, Sie brauchen, ignorieren Sie diese Dateien, weil Sie verfolgt schon.Wenn Sie zu entwickeln, auf einer täglichen basis, empfehle ich Ihnen, fügen Sie Ihre gewohnheitsmäßig ignorierte Dateien zu Ihrem
~/.gitignore_global
- Datei. Sogit
wird schon wissen, welche Dateien, die Sie (im Sinne von "Ihr user", da es eine Datei in deinem home-Verzeichnis) in der Regel ignorieren.In meinem Fall, es ist, weil die Dateien, die bereits im repository vorhanden sein und ich versuche, es zu ignorieren.
Diese sind die Dinge, die ich Tat, um das Problem zu beheben:
Dann alle änderungen, die ich auf diese Dateien ignoriert wurden.
Ich denke, Sie können nicht ignorieren, Dateien, die bereits auf das repository.
Schauen Sie sich auch die Verzeichnis, wo Sie
.gitignore
.Sollte es in den Stamm des Projekts:
Nicht in
Gibt es ein weiteres Problem mit
.gitignore
passieren könnte, vor allem für Windows-Benutzer. Git mag es nicht, wenn Sie Namen.gitignore
(wieunity.gitignore
).Sie wollen immer name es
.gitignore
oder auf Windows.gitignore.
wie Windows denkt, dass Sie versuchen, es umzubenennen, ohne einen Dateinamen ein.Ich lief in dieses Problem. Die Inhalte innerhalb meiner .gitignore-Datei weiterhin in der Liste erscheinen die nicht verfolgte Dateien.
Habe ich diese zum erstellen der Datei kann ignoriert werden:
Es stellt sich heraus, dass die Doppel-Angebote seien die Ursache für das Problem für mich. Ich löschte die Datei ignorieren und dann erneut den Befehl, ohne Anführungszeichen, und es funktionierte wie erwartet. Ich hatte keine Notwendigkeit zu Chaos mit dem Datei-Codierung. Ich bin auf einem Windows - 10 Maschine mit Cmder.
Beispiel:
Für mich keiner der bisherigen Antworten gearbeitet. Ich hatte zu kopieren
.gitignore
text in dieexclude.txt
- Datei gefunden, beiSobald Sie dies getan haben, aktualisieren Sie die änderungen, und alle die nicht verfolgte Dateien sind Weg. Begehen als üblich.
Mein Problem war (wie OP vorgeschlagen) eine korrupte .gitignore-Datei. Ich glaube nicht, daß es war und ignorierte die Möglichkeit, bis alles andere versagt. Die Korruption nicht zeigen, bis in
vi
, aber es gab zwei bytes am Anfang der Datei, die die .gitignore-Datei, um ignoriert zu werden. Für mich, diese zeigte nur, wenn ich tipptecat .gitignore
, die zeigten:Ich habe keine Ahnung, wie diese dort gelandet, aber die Neuerstellung der Datei das Problem behoben wurde. Eine hex-Analyse der beschädigten Datei ergab die folgenden:
Ich hatte dieses problem, mit ein .gitignore-Datei mit dieser Zeile:
Ich habe gerade festgestellt, dass in der Tat, dieses Verzeichnis ist ein symbolischer link auf einen Ordner woanders:
Auf der Linie
lib/ext/
, Git sieht eigentlich für ein Ordner, aber ein symbolischer link ist ein Datei, so meinelib
Ordner nicht ignoriert.Ich behoben durch Austausch
lib/ext/
durchlib/ext
in meine .gitignore-Datei.Speziell für Windows-Benutzer: Wenn Sie nicht verfolgte Dateien und das löschen/entfernen der Cache-Dateien nicht funktioniert. Öffnen Sie PowerShell-und die Umwandlung der .gitignore-Datei zu UTF-8-Codierung:
$Myfile = Get-Content .\.gitignore
$Myfile = | Out-File -Encoding "UTF8" .gitignore
Müssen Sie dies nur einmal zu Kodieren die .gitignore-Datei für das Verzeichnis, da die Datei dann richtig kodiert, wenn Sie die Datei Bearbeiten in der Zukunft sollte es funktionieren. Ich glaube, dies ist aufgrund einer Panne mit GitHub nicht über zu Lesen, die nicht UTF-8-Codierung für ein .gitignore-Datei. So weit ich bin mir bewusst, dieses Problem wurde noch nicht behoben, für Windows. Es ist keine allzu große Sache, nur ein Schmerz zu Debuggen, wenn es nicht funktioniert.
Hatte ich das gleiche problem. Ich glaube die Frage wurde ein CR gegen CR+LF Diskrepanz. Ich packte die Dinge in meinem .gitignore Sie CMD (unter Windows 7) und den folgenden Befehl aus:
Schlecht:
Etc.
Das Problem war, dass dieser Befehl nicht die richtigen end-of-line-marker für Git zu erkennen, die Zeilenumbrüche (entweder CR oder CR+LF als Git erwartet, dass die anderen). Ich löste das problem durch manuelles ersetzen von Zeilenumbrüchen in Vim (Vim ist die Rettung!) und es funktionierte perfekt.
Versuchen mit der Bearbeitung Ihrer .gitignore in Notepad++ oder Vim (im Idealfall). Auch wenn die Datei sieht wie es ist richtig formatiert, ersetzen Sie die Zeilenumbrüche. Es klingt komisch, ich weiß, aber es funktionierte für mich. 😀
OK, also in meinem Fall die akzeptierte Lösung hat nicht funktioniert, und was funktioniert, wird hier beschrieben:
Ist Visual Studio 2013 Ignoriere .gitignore-Datei?
Kurz:
ms-persist.xml
Eine Sache auch betrachten: Sie speichern Ihre .gitignore-Datei mit der richtigen Zeilenenden?
Windows:
Wenn Sie es auf Windows, sparen Sie es mit Windows-Zeilenenden? Nicht alle Programme dies tun wird standardmäßig mit Notepad++ und viele PHP-Editoren standardmäßig auf Linux-Zeilenenden, so werden die Dateien server kompatibel. Eine einfache Möglichkeit um dies zu überprüfen, ist öffnen Sie die Datei im Windows-Editor. Alles erscheint in einer Zeile, dann wird die Datei gespeichert wurde, der mit Linux-Zeilenenden.
Linux:
Wenn Sie Probleme mit der Datei zu arbeiten in einer Linux-Umgebung, öffnen Sie die Datei in einem editor wie Emacs oder nano. Wenn Sie sehen, alle nicht-druckbaren Zeichen, dann die Datei mit Windows-Zeilenenden.
Entfernen Sie einfach den Ordner oder die Datei, die begangen wurde, die zuvor in Git, indem Sie den folgenden Befehl aus. Dann gitignore-Datei wird entsprechend die richtigen Dateien.
Eine heikle Sache, die nicht unter die anderen Antworten hier ist, dass die .gitignore-Datei nicht funktioniert, wenn Sie die inline-Kommentare, wie dieser:
So, wenn man Kommentare wie, dass, ändern Sie diese folgendermaßen:
Ist es auch eine Möglichkeit, dass Sie bearbeitet die
.gitignore
- Datei mit einemsudo
Befehl. Ich hatte das gleiche Problem und während der Ausführung der Befehle:git status
ich konnte noch sehen, das "ignoriert werden" - Dateien.Beim Bearbeiten mit
nano .gitignore
stattsudo nano .gitignore
konnte ich sehen, die richtige Reflexion.Habe ich erstellt .gitignore mit
echo "..." > .gitignore
in der PowerShell in Windows, weil es nicht lassen Sie mich, um es zu schaffen in Windows Explorer.Das problem in meinem Fall war die Codierung der erstellten Datei, und das problem war gelöst, nachdem ich es geändert, um ANSI.
Wenn Sie ein Notepad++ Benutzer, versuchen Sie das folgende:
Öffnen Sie Ihre .gitignore-Datei mit Notepad++ und tun:
Menü Bearbeiten → die EOL-Konvertierung → Windows-Format → Speichern.
Versuchen Sie es mit
git status
wieder und sehen, ob es für Sie arbeitet.Habe ich geschrieben die Antwort auf eine ähnliche Frage hier.
War es für mich ein weiteres problem. Meine .gitignore-Datei so eingestellt ist, ignorieren Sie alles, außer Sachen, die ich sagen, es nicht ignorieren. Wie Z:
Nun dies bedeutet natürlich, dass ich auch erzählen Git zu ignorieren .gitignore-Datei selbst. Das war kein problem, solange ich mich nicht, die Verfolgung der .gitignore-Datei. Aber irgendwann habe ich begangen .gitignore-Datei selbst. Dies führte dann zu der .gitignore-Datei nicht richtig ignoriert.
Damit das hinzufügen einer weiteren Zeile fest es:
Ein weiterer möglicher Grund – einige Beispiele von Git-clients gleichzeitig laufen. Zum Beispiel, "git-shell" + "GitHub Desktop", etc.
Mir das passiert. Ich war mit "GitHub Desktop", wie die wichtigsten Kunden, und es ignorierte einige neue .gitignore-Einstellungen: nach dem commit commit:
Grund: die Visual Studio-Code-editor, die im hintergrund laufen mit dem gleichen geöffnet repository. Visual Studio-Code hat eine eingebaute Git-Steuerung, und das sorgt für einige Konflikte.
Lösung: double-check mehrere, versteckte Git-clients und verwenden Sie nur eine Git-client zu einer Zeit, vor allem während clearing die Git-cache.