Meine .gitignore
Datei scheint von Git ignoriert zu werden - könnte die .gitignore
Datei beschädigt sein? Welches Dateiformat, Gebietsschema oder welche Kultur erwartet Git?
Mein .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)
Ich möchte debug.log
und möchte nbproject/
nicht in der Liste der nicht verfolgten Dateien erscheinen.
Wo soll ich anfangen, dies zu beheben?
.gitignore
Datei verwendetANSI
oderUTF-8
codiert. Wenn etwas anderes verwendet wirdUnicode BOM
, kann Git die Datei möglicherweise nicht lesen.echo "file" > .gitignore
in PowerShell verwendet, die Datei hatte eine UCS-2-Codierung!git rm --cached debug.log nbproject/
Antworten:
Selbst wenn Sie die Dateien bisher noch nicht verfolgt haben, scheint Git in der Lage zu sein, sie zu "kennen", selbst nachdem Sie sie hinzugefügt haben
.gitignore
.WARNUNG: Übernehmen Sie zuerst Ihre aktuellen Änderungen, sonst verlieren Sie sie.
Führen Sie dann die folgenden Befehle aus dem obersten Ordner Ihres Git-Repositorys aus:
quelle
Wenn Git die Änderungen, die Sie an Ihrer
.gitignore
Datei vorgenommen haben, nicht bemerkt , sollten Sie die folgenden Punkte überprüfen:.gitignore
Datei vorhanden, die Ihre lokale Datei beeinträchtigtVersuchen Sie Folgendes, wenn Sie einer .gitignore-Datei etwas hinzufügen:
Wenn Sie etwas aus einer Gitignore-Datei entfernen und die oben genannten Schritte möglicherweise nicht funktionieren, versuchen Sie Folgendes, wenn Sie feststellen, dass die oben genannten Schritte nicht funktionieren :
quelle
git rm -r --cached .
arbeitete für michFest. OK, ich habe die Gitignore-Datei im Editor unter Windows erstellt und sie hat nicht funktioniert. Als ich mir die .gitignore-Datei unter Linux ansah, sah sie wie organisiertes Kauderwelsch aus - vielleicht hatte Notepad eher Unicode als ASCII oder was auch immer 8-Bit ist geschrieben.
Also habe ich die Datei auf meiner Linux-Box neu geschrieben und als ich sie wieder in Windows gezogen habe, funktioniert sie einwandfrei! Hurra!
quelle
Ohne ein weiteres Commit zu Ihrem Projekt hinzuzufügen, reicht eine Zeile aus, damit die
.gitignore
Arbeit so funktioniert, wie sie soll:Dadurch werden sie aus dem Repository entfernt, bleiben jedoch physisch erhalten. Im Klartext werden alle mit ihnen verbundenen Änderungen gelöscht und ihre Änderungen werden auch in zukünftigen Commits nicht nachverfolgt. Eine bessere Erklärung finden Sie hier .
quelle
git rm -r --cached someFile.php
und es hat wie ein ZauberEine weitere Ursache für dieses Problem sind Leerzeichen oder Tabulatoren vor der Anweisung:
Beispiel:
Und wie aus dem Kommentar unten hervorgeht, kann ein Leerzeichen auch ein Problem sein:
quelle
*.txt # Tex files
. Aber Git versteht: "Ignoriere die Dateien mit der Erweiterungtxt
"Ich bemerkte, dass die Codierung von
.gitignore
einen Effekt hatte - wenn die Datei Unicode war, wurde sie ignoriert, wenn es ASCII war, war es nicht.Prozess:
PS> git status
.gitignore
‚s - Codierung:PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
quelle
touch .gitignore
undecho ".db" >> .gitignore
route via Powershell erstellt. Ich stellte fest, dassecho ".db" >> .gitignore"
die Dateicodierung auf UCS-2 LE-BOM eingestellt wurde, eine schnelle Konvertierung in ASCII und der Gitignore funktionierte.Wie bei den anderen Lösungen, begehen erster und darüber im Klaren sein , dass Sie werden alle nicht-festgeschriebenen Änderungen verlieren.
Ich hatte damit bessere Ergebnisse:
Beachten Sie, dass der Status jetzt keine geänderten Dateien enthalten sollte.
quelle
In meinem Fall liegt es daran, dass die Dateien bereits im Repository vorhanden sind und ich versuche, sie zu ignorieren.
Dies sind die Dinge, die ich getan habe, um das Problem zu beheben:
Bis dahin wurden alle Änderungen, die ich an diesen Dateien vorgenommen habe, ignoriert.
Ich denke, Sie können Dateien, die bereits im Repository vorhanden sind, nicht ignorieren.
quelle
Alle Antworten hier sind tatsächlich Problemumgehungen. Sie müssen die Gitignore-Datei erstellen, bevor Sie sie ausführen können
git init
. Andernfallsgit
werden Sie nie erfahren, dass Sie diese Dateien ignorieren müssen, da sie bereits verfolgt wurden.Wenn Sie sich täglich weiterentwickeln, empfehle ich Ihnen, Ihre gewohnheitsmäßig ignorierten Dateien zu Ihrer
~/.gitignore_global
Datei hinzuzufügen . Auf diese Weisegit
wissen Sie bereits, welche Dateien Sie (dh "Ihr Benutzer", da es sich um eine Datei in Ihrem Home-Verzeichnis handelt) normalerweise ignorieren.quelle
~/.gitignore_global
ist ein konfigurierbarer Name. Führen Siegit config --global core.excludesfile
zuerst aus, um festzustellen, ob bereits eine Datei definiert ist. Wenn nicht, laufen Siegit config --global core.excludesfile ~/.gitignore_global
..gitignore
zuerst erstellt haben: Benennen Sie die verfolgte Datei um..gitignore
wird angewendet, als ob es neu wäre.Überprüfen Sie auch das Verzeichnis, in dem Sie es ablegen
.gitignore
.Es sollte sich in der Wurzel Ihres Projekts befinden :
Nicht in
quelle
Speziell für Windows-Benutzer: Wenn Sie nicht verfolgte Dateien haben und das Löschen / Entfernen der zwischengespeicherten Dateien nicht funktioniert. Versuchen Sie, PowerShell zu öffnen und die Gitignore-Datei in UTF-8-Codierung zu konvertieren:
Sie müssen dies nur einmal tun, um die Gitignore-Datei für dieses Verzeichnis zu codieren. Da die Datei dann korrekt codiert wird, sollte sie bei jeder zukünftigen Bearbeitung der Datei funktionieren. Ich glaube, dies liegt an einer Panne, bei der GitHub nicht im Begriff ist, eine Nicht-UTF-8-Codierung für eine Gitignore-Datei zu lesen. Soweit mir bekannt ist, wurde dieses Problem für Windows noch nicht behoben. Es ist keine allzu große Sache, nur ein Problem beim Debuggen, wenn es nicht funktioniert.
quelle
.gitignore
Dies kann insbesondere bei einem Windows-Benutzer zu einem weiteren Problem führen . Git mag es nicht, wenn Sie.gitignore
(wieunity.gitignore
) benennen .Sie sollten es immer
.gitignore
oder unter Windows.gitignore.
benennen , da Windows denkt, Sie versuchen, es ohne Dateinamen umzubenennen.quelle
Ich bin gerade auf dieses Problem gestoßen. Der Inhalt meiner .gitignore-Datei wurde weiterhin in der Liste der nicht verfolgten Dateien angezeigt.
Ich habe dies verwendet, um die Ignorierdatei zu erstellen:
Es stellt sich heraus, dass die doppelten Zitate das Problem für mich verursacht haben. Ich habe die Ignorierdatei gelöscht und den Befehl dann erneut ohne Anführungszeichen verwendet, und es hat wie erwartet funktioniert. Ich musste mich nicht mit der Dateicodierung herumschlagen. Ich bin auf einem Windows 10-Computer mit Cmder .
Beispiel:
quelle
Bei mir hat keine der vorherigen Antworten funktioniert. Ich musste
.gitignore
Text in dieexclude.txt
Datei kopieren, die unter gefunden wurdeWenn Sie fertig sind, aktualisieren Sie Ihre Änderungen und alle nicht verfolgten Dateien sind verschwunden. Commit wie gewohnt.
quelle
Mein Problem war (wie von OP vorgeschlagen) eine beschädigte .gitignore-Datei. Ich glaubte es nicht und ignorierte die Möglichkeit, bis alles andere fehlschlug. Die Beschädigung wurde nicht
vi
angezeigt, aber am Anfang der Datei befanden sich zwei Bytes, die dazu führten, dass die Gitignore-Datei ignoriert wurde. Für mich tauchten diese nur beim Tippen aufcat .gitignore
, was zeigte:Ich habe keine Ahnung, wie diese dort gelandet sind, aber die Neuerstellung der Datei hat das Problem behoben. Eine Hex-Analyse der beschädigten Datei ergab Folgendes:
quelle
Ich hatte dieses Problem mit einer Gitignore-Datei, die diese Zeile enthält:
Ich habe gerade festgestellt, dass dieses Verzeichnis tatsächlich ein symbolischer Link zu einem Ordner an einem anderen Ort ist:
In der Zeile
lib/ext/
sucht Git tatsächlich nach einem Ordner , aber ein symbolischer Link ist eine Datei , sodass meinlib
Ordner nicht ignoriert wird.Ich habe dies behoben,
lib/ext/
indemlib/ext
ich in meiner .gitignore-Datei durch ersetzt habe.quelle
Ich hatte das gleiche Problem. Ich glaube, das Problem war eine Diskrepanz zwischen CR und CR + LF. Ich habe Dinge in meinem .gitignore mit CMD (unter Windows 7) und dem folgenden Befehl gespeichert:
Schlecht:
Usw.
Das Problem war, dass dieser Befehl nicht die richtige Zeilenende-Markierung für Git platziert, um die Zeilenumbrüche zu erkennen (entweder CR oder CR + LF, wenn Git die andere erwartet). Ich habe das Problem gelöst, indem ich jede neue Zeile in Vim manuell ersetzt habe (Vim zur Rettung!) Und es hat perfekt funktioniert.
Versuchen Sie, Ihren .gitignore in Notepad ++ oder Vim zu bearbeiten (idealerweise). Versuchen Sie, die Zeilenumbrüche zu ersetzen, auch wenn die Datei korrekt formatiert aussieht. Es klingt komisch, ich weiß, aber es hat bei mir funktioniert. : D.
quelle
OK, in meinem Fall hat die akzeptierte Lösung nicht funktioniert, und was funktioniert hat, wird hier beschrieben:
Ignoriert Visual Studio 2013 Ihre Gitignore-Datei?
Zusamenfassend:
ms-persist.xml
quelle
Beachten Sie auch Folgendes: Speichern Sie Ihre Gitignore-Datei mit den richtigen Zeilenenden?
Windows:
Wenn Sie es unter Windows verwenden, speichern Sie es mit Windows-Zeilenenden? Nicht alle Programme tun dies standardmäßig. Notepad ++ und viele PHP-Editoren verwenden standardmäßig Linux-Zeilenenden, sodass die Dateien serverkompatibel sind. Eine einfache Möglichkeit, dies zu überprüfen, besteht darin, die Datei im Windows-Editor zu öffnen. Wenn alles in einer Zeile angezeigt wird, wurde die Datei mit Linux-Zeilenenden gespeichert.
Linux:
Wenn Sie Probleme mit der Datei haben, die in einer Linux-Umgebung funktioniert, öffnen Sie die Datei in einem Editor wie Emacs oder Nano . Wenn Sie nicht druckbare Zeichen sehen, wurde die Datei mit Windows-Zeilenenden gespeichert.
quelle
Ein weiterer möglicher Grund - einige Instanzen von Git-Clients, die gleichzeitig ausgeführt werden . Zum Beispiel "Git Shell" + "GitHub Desktop" usw.
Das ist mir passiert. Ich habe "GitHub Desktop" als Hauptclient verwendet und einige neue .gitignore-Einstellungen ignoriert: Commit nach Commit:
Grund : Der Visual Studio Code-Editor wurde im Hintergrund mit demselben geöffneten Repository ausgeführt. Visual Studio Code verfügt über eine integrierte Git-Steuerung, was zu einigen Konflikten führt.
Lösung : Überprüfen Sie mehrere versteckte Git-Clients und verwenden Sie jeweils nur einen Git-Client, insbesondere beim Löschen des Git-Cache.
quelle
Es gibt bereits einige gute Antworten, aber meine Situation war langweilig. Ich hatte die Quelle einer auf Win10 installierten PLM-Software (Product Lifecycle Management) bearbeitet und danach entschieden: "Ich hätte dies wahrscheinlich zu einem Git-Repo machen sollen."
Die Cache-Option funktioniert also nicht direkt für mich. Posting für andere, die möglicherweise die Quellcodeverwaltung hinzugefügt haben, nachdem sie eine Reihe von anfänglichen Arbeiten ausgeführt haben UND
.gitignore
nicht funktionieren, ABER Sie haben möglicherweise Angst, eine Reihe von Arbeiten zu verlieren, sind alsogit rm --cached
nichts für Sie.!WICHTIG: Das liegt wirklich daran, dass ich git zu spät zu einem "Projekt" hinzugefügt habe, das zu groß ist und meinen .gitignore zu ignorieren scheint. Ich habe KEINE Verpflichtungen. Ich kann damit weggucken :)
Zuerst habe ich gerade getan:
Dann musste ich mir ein Bild von meinen Veränderungen machen. Auch dies ist ein Installationsprodukt, an dem ich Änderungen vorgenommen habe. Zu spät für ein erstes Commit der reinen Hauptniederlassung. Ich brauchte also eine Liste der Änderungen, die ich seit der Installation des Programms vorgenommen hatte, indem ich
> changed.log
eine der folgenden Optionen hinzufügte :Power Shell
Bash
Jetzt habe ich meine Liste der Änderungen in den letzten zehn Tagen (lassen Sie uns hier nicht auf bewährte Methoden eingehen, außer zu sagen, ja, ich habe mir das angetan).
Für einen Neuanfang jetzt:
Ich musste meine geänderte Liste mit meinem wachsenden .gitignore vergleichen, der ausgeführt wurde,
git status
als ich ihn verbesserte, aber meine Änderungen in .gitignore werden im Laufe der Zeit eingelesen.Endlich habe ich die Liste der gewünschten Änderungen! In meinem Fall handelt es sich um ein Boilerplate - einige Themen funktionieren zusammen mit mehreren XML-Konfigurationen, die für das Ausführen eines Entwicklungssystems gegen diese Software spezifisch sind und die ich in ein Repo einfügen möchte, damit andere Entwickler sie nutzen und dazu beitragen können ... Dies wird also unser Hauptzweig sein begehen, pushen und endlich NIEDERLASSEN für neue Arbeit!
quelle
Entfernen Sie einfach den Ordner oder die Datei, die zuvor in Git festgeschrieben wurde, mit dem folgenden Befehl. Dann gibt die Gitignore-Datei die richtigen Dateien wieder.
quelle
Eine schwierige Sache, die in den anderen Antworten hier nicht behandelt wird, ist, dass die .gitignore-Datei nicht funktioniert, wenn Sie Inline-Kommentare wie diese haben:
Wenn Sie solche Kommentare haben, ändern Sie sie folgendermaßen:
quelle
Es ist auch möglich, dass Sie die
.gitignore
Datei mit einemsudo
Befehl bearbeitet haben . Ich bin auf dasselbe Problem gestoßen, und währendgit status
ich die Befehle ausführte: konnte ich immer noch die Dateien sehen, die ignoriert werden sollten.Beim Bearbeiten mit
nano .gitignore
stattsudo nano .gitignore
konnte ich die richtige Reflexion sehen.quelle
Ich habe .gitignore mit
echo "..." > .gitignore
PowerShell in Windows erstellt, da ich es nicht im Windows Explorer erstellen kann.Das Problem in meinem Fall war die Codierung der erstellten Datei, und das Problem wurde behoben, nachdem ich sie in ANSI geändert hatte.
quelle
Ich habe auch das gleiche Problem unter Ubuntu, ich habe das
.gitignore
vom Terminal erstellt und es funktioniert für michtouch .gitignore
quelle
Meins hat nicht funktioniert, weil ich buchstäblich ein Textdokument namens .gitignore erstellt habe
Erstellen Sie stattdessen ein Textdokument, öffnen Sie es in Notepad ++ und speichern Sie es als .gitignore
Stellen Sie sicher, dass Sie beim Speichern alle Typen (*. *) Aus der Dropdown-Liste auswählen.
Oder einfach in gitbash verwenden
touch .gitignore
quelle
Wenn Sie ein Notepad ++ - Benutzer sind, versuchen Sie Folgendes:
Öffnen Sie Ihre Gitignore-Datei mit Notepad ++ und führen Sie folgende Schritte aus:
Menü Bearbeiten → EOL-Konvertierung → Windows-Format → Speichern .
Versuchen Sie es
git status
erneut und prüfen Sie, ob es für Sie funktioniert.Ich habe die Antwort auf eine ähnliche Frage hier gepostet .
quelle
Für mich war es ein weiteres Problem. Meine .gitignore-Datei ist so eingerichtet, dass sie alles ignoriert, außer Dinge, die ich nicht ignorieren soll. Wie solche:
Das bedeutet natürlich, dass ich Git auch sage, dass er die .gitignore-Datei selbst ignorieren soll. Das war kein Problem, solange ich die .gitignore-Datei nicht verfolgte. Aber irgendwann habe ich die .gitignore-Datei selbst festgeschrieben. Dies führte dann dazu, dass die .gitignore-Datei ordnungsgemäß ignoriert wurde.
Das Hinzufügen einer weiteren Zeile hat das Problem behoben:
quelle
Mein Problem war, dass ich Dateien aufgeschrieben habe, um sie mit Anführungszeichen zu ignorieren. "" Trennung nicht mit Schrägstrich /.
Dies funktionierte nicht und wurde von git ignoriert:
Das hat gut funktioniert:
Ich habe auch meine Dateicodierung in Windows mit Notepad ++ überprüft. Die Codierung wurde auf UTF-8 eingestellt.
quelle