.gitignore wird von Git ignoriert

1513

Meine .gitignoreDatei scheint von Git ignoriert zu werden - könnte die .gitignoreDatei 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.logund möchte nbproject/nicht in der Liste der nicht verfolgten Dateien erscheinen.

Wo soll ich anfangen, dies zu beheben?

Matt Parkins
quelle
56
Stellen Sie sicher, dass Ihre .gitignoreDatei verwendet ANSIoder UTF-8codiert. Wenn etwas anderes verwendet wird Unicode BOM, kann Git die Datei möglicherweise nicht lesen.
ADTC
8
@ADTC das war genau das Problem auf meinem Computer (Windows). Ich habe echo "file" > .gitignorein PowerShell verwendet, die Datei hatte eine UCS-2-Codierung!
MarioDS
7
git rm --cached debug.log nbproject/
Gayan Weerakutti
4
Warum der erste Kommentar hier keine Antwort ist, ist mir ein
Rätsel
2
@MattParkins Ah, ich sehe es jetzt, es überrascht mich immer noch, dass eine so einfache und auf den Punkt gebrachte Antwort als Kommentar vergraben ist oder dass die tatsächlich akzeptierte dort unten ist. Vielen Dank!
RedOrav

Antworten:

3120

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:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"
Alin Huruba
quelle
8
Ich habe "usage: git rm [options] [-] <file> ..." gedruckt, als ich "git rm -r --cached" ausprobiert habe. Wenn es darauf ankommt, verwende ich Git in PowerShell, nachdem ich in GitHub für Windows auf "Extras-> Shell hier öffnen" geklickt habe.
Soonts
61
unter Windows: git rm. -r --cached und git hinzufügen.
Beachhouse
90
Beachten Sie, dass Sie alle Ihre Änderungen vorher festschreiben müssen, da Sie sonst die Kontrolle über alle geänderten Dateien verlieren !!
Cosmin
45
Die ersten 3 Kommentatoren scheinen den Punkt am Ende verpasst zu haben. Dies bedeutet jede Datei. "git -rm -r --cached." <- beachte den Punkt.
Christophe De Troyer
18
Wenn Sie keine Festschreibung vornehmen möchten, können Sie Ihre Änderungen im Regal ablegen: "git stash". Führen Sie die obigen Befehle aus. und führen Sie "Git Stash Pop"
Ivan Voroshilin
335

Wenn Git die Änderungen, die Sie an Ihrer .gitignoreDatei vorgenommen haben, nicht bemerkt , sollten Sie die folgenden Punkte überprüfen:

  • Möglicherweise ist eine globale .gitignoreDatei vorhanden, die Ihre lokale Datei beeinträchtigt
  • Versuchen Sie Folgendes, wenn Sie einer .gitignore-Datei etwas hinzufügen:

    git add [uncommitted changes you want to keep] && git commit
    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"
    
  • 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 :

    git add -f [files you want to track again]
    git commit -m "Refresh removing files from .gitignore file."
    
    // For example, if you want the .java type file to be tracked again,
    // The command should be:
    //     git add -f *.java
    
ifeegoo
quelle
3
Vielleicht könnten Sie die Antwort von @AlinHuruba bearbeiten, um Schritt 3 hinzuzufügen?
Benj
@Benj Vielen Dank für Ihren Rat. Ich habe AlinHurubas Antwort nicht gefunden. Ich weiß nicht, was der Unterschied ist. Bitte sagen Sie es mir direkt.
Ifeegoo
2
Der Schritt 3 ist das, was ich brauchte. Die meisten Antworten geben nur an, wie die Datei entfernt werden soll, die wir entfernen möchten. Vielen Dank für den entgegengesetzten Standpunkt.
Yeung
Hoffe das hilft dir!
Ifeegoo
7
git rm -r --cached .arbeitete für mich
Jason
198

Fest. 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!

Matt Parkins
quelle
77
Wählen Sie im Editor einfach die Codierung "ANSI" im Dialogfeld "Speichern unter". Oder noch besser, besorgen Sie sich einen richtigen Texteditor - schließlich sind Sie ein Programmierer :) ... Ich kann "Programmer's Notepad" empfehlen, andere bevorzugen Notepad ++ und es gibt buchstäblich Hunderte mehr da draußen.
0xC0000022L
1
hehe, yep, ich hätte es in Netbeans (die ich damals benutzte), Eclipse oder Visual Studio erstellen sollen. Ich habe es gerade von der Kommandozeile aus angerufen und gedacht, es würde keinen Unterschied machen.
Matt Parkins
8
Mein Problem war ähnlich - mein .gitignore verwendete UTF8 mit einer Stückliste . Speichern Sie es einfach als UTF8 ohne Stückliste und es begann auf magische Weise zu funktionieren.
Phil
13
Das war auch mein Problem. Ich hatte die .gitignore-Datei mit "echo dirName> .gitignore" erstellt, weil Windows das Erstellen von Dateien, die mit "." Beginnen, so schwierig macht. Die Codierung der auf diese Weise erstellten Datei war für git nicht lesbar und wurde stattdessen als Binärdatei interpretiert. Klicken Sie in Notepad ++ auf "Codierung -> UTF-8", speichern, fertig.
Laura
4
Hatte das gleiche Problem wie @Laura in Powershell - die Datei wird standardmäßig als UTF16 gespeichert.
Mrówa
113

Ohne ein weiteres Commit zu Ihrem Projekt hinzuzufügen, reicht eine Zeile aus, damit die .gitignoreArbeit so funktioniert, wie sie soll:

git rm -r --cached debug.log nbproject

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 .

H Aßdøµ
quelle
1
Arbeitete genau so, wie ich wollte - ich hatte nur 1 Datei, die nicht richtig verfolgt wurde. Ich habe seinen Inhalt im Notizblock gespeichert und habe: git rm -r --cached someFile.phpund es hat wie ein Zauber
funktioniert
@FMFF Dadurch wird es aus dem Repository entfernt, aber physisch beibehalten. Im Klartext werden alle damit verbundenen Änderungshistorien gelöscht und die Änderungen in zukünftigen Commits nicht nachverfolgt. Eine bessere Erklärung finden Sie hier: stackoverflow.com/questions/37279654/…
H Aßdøµ
Ich habe eine "fatal: pathspec 'debug.log' stimmte nicht mit Dateien überein"
Michael
45

Eine weitere Ursache für dieses Problem sind Leerzeichen oder Tabulatoren vor der Anweisung:

Beispiel:

# Be aware of the following:
 notWorkingIgnore.*
workingIgnore.*

Und wie aus dem Kommentar unten hervorgeht, kann ein Leerzeichen auch ein Problem sein:

# Be aware of the following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace
Rawa
quelle
11
Ein nachlaufender Platz war mein Problem, das noch schwieriger zu finden ist.
Amr
3
hatte auch ein nachlaufendes Leerzeichenproblem.
Trefex
3
Ja, das gleiche hier. Ich dachte, ich könnte Kommentare nach dem Dateimuster schreiben : *.txt # Tex files. Aber Git versteht: "Ignoriere die Dateien mit der Erweiterung txt "
Adam Libuša
3
Mein Wort, ich habe 2 Tage gebraucht, um diese 15-stimmige Antwort zu finden. Das verdient mehr.
Fordcars
2
Sie haben gerade ein Problem gelöst, das ich seit Monaten hatte ... Danke!
Arkellys
36

Ich bemerkte, dass die Codierung von .gitignoreeinen Effekt hatte - wenn die Datei Unicode war, wurde sie ignoriert, wenn es ASCII war, war es nicht.

Prozess:

  1. Status überprüfen: PS> git status
  2. Erstellen Sie eine Funktion für Get-FileEncoding
  3. Test .gitignore‚s - Codierung:PS> Get-FileEncoding .gitignore
  4. Ändern Sie die Codierung in ASCII:PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. Bestätigen: PS> git status
Craig
quelle
5
1000 danke dafür. Ich habe die .gitignore-Datei auf meinem System mit der touch .gitignoreund echo ".db" >> .gitignoreroute via Powershell erstellt. Ich stellte fest, dass echo ".db" >> .gitignore"die Dateicodierung auf UCS-2 LE-BOM eingestellt wurde, eine schnelle Konvertierung in ASCII und der Gitignore funktionierte.
B-Rad
2
Sie können versuchen, indem Sie Schritt 2 und 3 überspringen.
Aniket Bhansali
32

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:

git rm -r --cached .
git reset HEAD --hard
git status

Beachten Sie, dass der Status jetzt keine geänderten Dateien enthalten sollte.

Steven Stark
quelle
2
Dieser funktioniert nicht für mich, aber die Antwort von ifeegoo tut es
Fanny
21

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:

  • Kopieren Sie die Dateien in einen temporären Ordner
  • Entfernen Sie sie aus meinem Projektordner.
  • Übernehmen Sie die Änderungen, mit denen diese Dateien aus dem Repository entfernt werden
  • Diese Dateien wurden erneut zu meinem Projektordner hinzugefügt

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.

Edesa
quelle
In meinem Fall waren sie bereits inszeniert. Erst nachdem ich getan hatte, was Sie vorgeschlagen hatten, und dann versucht hatte, die Warnung zu begehen und zu sehen, dass sie inszeniert und entfernt worden waren, wurde mir klar, dass dies das Problem war.
DudeNumber4
19

Alle Antworten hier sind tatsächlich Problemumgehungen. Sie müssen die Gitignore-Datei erstellen, bevor Sie sie ausführen können git init. Andernfalls gitwerden Sie nie erfahren, dass Sie diese Dateien ignorieren müssen, da sie bereits verfolgt wurden.

echo .idea/ >> .gitignore
git init

Wenn Sie sich täglich weiterentwickeln, empfehle ich Ihnen, Ihre gewohnheitsmäßig ignorierten Dateien zu Ihrer ~/.gitignore_globalDatei hinzuzufügen . Auf diese Weise gitwissen Sie bereits, welche Dateien Sie (dh "Ihr Benutzer", da es sich um eine Datei in Ihrem Home-Verzeichnis handelt) normalerweise ignorieren.

CESCO
quelle
Gott sei Dank ... endlich eine Lösung, die für mich funktioniert.
Dbl
~/.gitignore_globalist ein konfigurierbarer Name. Führen Sie git config --global core.excludesfilezuerst aus, um festzustellen, ob bereits eine Datei definiert ist. Wenn nicht, laufen Sie git config --global core.excludesfile ~/.gitignore_global.
Noumenon
Eine Problemumgehung, wenn Sie nicht .gitignorezuerst erstellt haben: Benennen Sie die verfolgte Datei um. .gitignorewird angewendet, als ob es neu wäre.
Noumenon
15

Überprüfen Sie auch das Verzeichnis, in dem Sie es ablegen .gitignore.

Es sollte sich in der Wurzel Ihres Projekts befinden :

./myproject/.gitignore

Nicht in

./myproject/.git/.gitignore
Artem Zaytsev
quelle
9

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:

$Myfile = Get-Content .\.gitignore`
$Myfile | Out-File -Encoding "UTF8" .gitignore

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.

maximusg
quelle
8

.gitignoreDies kann insbesondere bei einem Windows-Benutzer zu einem weiteren Problem führen . Git mag es nicht, wenn Sie .gitignore(wie unity.gitignore) benennen .

Sie sollten es immer .gitignoreoder unter Windows .gitignore.benennen , da Windows denkt, Sie versuchen, es ohne Dateinamen umzubenennen.

Goldblaze
quelle
7

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:

echo "node_modules" > .gitignore

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:

echo node_modules > .gitignore
bprdev
quelle
Seltsamerweise hat diese Echoanweisung ein Problem behoben, das ich lokal hatte, als eine ignorierte Datei, die ich bei einem Unfall gelöscht und dann neu erstellt habe, als festschreibbare, nicht verfolgte Datei angezeigt wurde. Aus irgendeinem Grund wurde mein Problem behoben, obwohl dies meine Ignorierdatei nicht geändert hat.
Patrick
6

Bei mir hat keine der vorherigen Antworten funktioniert. Ich musste .gitignoreText in die exclude.txtDatei kopieren, die unter gefunden wurde

<Your-project-folder>\.git\info

Wenn Sie fertig sind, aktualisieren Sie Ihre Änderungen und alle nicht verfolgten Dateien sind verschwunden. Commit wie gewohnt.

Raga
quelle
6

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 nichtvi 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 auf cat .gitignore, was zeigte:

��# Built application files
*.apk
*.ap_

# ...

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:

user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.
pcdev
quelle
2
Das sieht aus wie eine UTF-16-Byte-Bestellmarke in einer UTF-8-codierten Datei. en.wikipedia.org/wiki/Byte_order_mark
jsageryd
6

Ich hatte dieses Problem mit einer Gitignore-Datei, die diese Zeile enthält:

lib/ext/

Ich habe gerade festgestellt, dass dieses Verzeichnis tatsächlich ein symbolischer Link zu einem Ordner an einem anderen Ort ist:

ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb  6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib

In der Zeile lib/ext/sucht Git tatsächlich nach einem Ordner , aber ein symbolischer Link ist eine Datei , sodass mein libOrdner nicht ignoriert wird.

Ich habe dies behoben, lib/ext/indem lib/extich in meiner .gitignore-Datei durch ersetzt habe.

roipoussiere
quelle
5

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:

echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore

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.

fiktiv
quelle
4

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:

  • Schließen Sie Visual Studio.
  • Navigieren Sie zu Ihrem .git-Ordner
  • Löschen ms-persist.xml
  • Starten Sie Visual Studio neu
Bartosz
quelle
3

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.

Strandhaus
quelle
3

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:

  1. Sie begehen etwas.
  2. Als nächstes Commit: Ignoriert die Gitignore-Einstellungen. Commit enthält viele temporäre Dateien, die im .gitignore erwähnt werden.
  3. Git-Cache löschen; Überprüfen Sie, ob .gitignore UTF-8 ist. Dateien entfernen → Festschreiben → Dateien zurück verschieben; ein Commit überspringen - nichts hat geholfen.

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.

Oleg Zarevennyi
quelle
3

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 .gitignorenicht funktionieren, ABER Sie haben möglicherweise Angst, eine Reihe von Arbeiten zu verlieren, sind also git rm --cachednichts 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:

rm -rf .git
rm -rf .gitignore

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.logeine der folgenden Optionen hinzufügte :

Power Shell

# Get files modified since date.
Get-ChildItem -Path path\to\installed\software\ -Recurse -File | Where-Object -FilterScript {($_.LastWriteTime -gt '2020-02-25')} | Select-Object FullName

Bash

# Get files modified in the last 10 days...
find ./ -type f -mtime -10

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:

git init .
# Create and edit .gitignore

Ich musste meine geänderte Liste mit meinem wachsenden .gitignore vergleichen, der ausgeführt wurde, git statusals 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!

Neil Guy Lindberg
quelle
2

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.

    git rm -r -f "folder or files insides"
Atif Hussain
quelle
2

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:

foo/bar # The bar file contains sensitive data so we don't want to make this public

Wenn Sie solche Kommentare haben, ändern Sie sie folgendermaßen:

# The bar file contains sensitive data so we don't want to make this public
foo/bar
James
quelle
2

Es ist auch möglich, dass Sie die .gitignoreDatei mit einem sudoBefehl bearbeitet haben . Ich bin auf dasselbe Problem gestoßen, und während git statusich die Befehle ausführte: konnte ich immer noch die Dateien sehen, die ignoriert werden sollten.

Beim Bearbeiten mit nano .gitignorestatt sudo nano .gitignorekonnte ich die richtige Reflexion sehen.

aviral sanjay
quelle
2

Ich habe .gitignore mit echo "..." > .gitignorePowerShell 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.

Ahmad
quelle
2

Ich habe auch das gleiche Problem unter Ubuntu, ich habe das .gitignorevom Terminal erstellt und es funktioniert für mich

touch .gitignore

UA_
quelle
2

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

Kari
quelle
1

Wenn Sie ein Notepad ++ - Benutzer sind, versuchen Sie Folgendes:

Öffnen Sie Ihre Gitignore-Datei mit Notepad ++ und führen Sie folgende Schritte aus:

Menü BearbeitenEOL-KonvertierungWindows-FormatSpeichern .

Versuchen Sie es git statuserneut und prüfen Sie, ob es für Sie funktioniert.

Ich habe die Antwort auf eine ähnliche Frage hier gepostet .

Ozesh
quelle
1

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:

/*
!/content/

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:

/*
!/content/
!.gitignore
user8118328
quelle
1

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:

"db.sqlite3"
"tdd_venv/"

Das hat gut funktioniert:

/db.sqlite3
/tdd_venv/

Ich habe auch meine Dateicodierung in Windows mit Notepad ++ überprüft. Die Codierung wurde auf UTF-8 eingestellt.

JSalys
quelle