working .gitignore funktioniert nicht




gitignore tutorial (19)

Meine .gitignore Datei scheint von git ignoriert zu werden - könnte die .gitignore Datei .gitignore sein? Welches Dateiformat, welches Gebietsschema oder welche Kultur erwartet git?

Mein .gitignore :

#this is a comment
debug.log
nbproject/

Ausgabe vom 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, dass debug.log und nbproject/ nicht in der Liste der nicht verfolgten Dateien nbproject/ werden.

Wo soll ich anfangen, das zu beheben?


Eine Sache, die Sie auch betrachten sollten, ist, dass Sie Ihre .gitignore-Datei mit den richtigen Zeilenenden speichern?

WINDOWS: Wenn Sie es in Windows verwenden, speichern Sie es mit Windows-Zeilenenden? Nicht alle Programme tun dies standardmäßig, notepad ++ und viele PHP-Editoren sind standardmäßig auf Linux-Zeilenenden eingestellt, so dass die Dateien serverkompatibel sind. Eine einfache Möglichkeit, dies zu überprüfen, ist die Datei in Windows Editor öffnen. Wenn alles in einer Zeile erscheint, wurde die Datei mit den Zeilenenden gespeichert.

LINUX: Wenn Sie Probleme mit der Datei in einer Linux-Umgebung haben. Öffnen Sie die Datei in einem Editor wie Emacs oder Nano. Wenn Sie nicht druckbare Zeichen sehen, wurde die Datei mit Windows-Zeilenenden gespeichert.


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

Beispiel:

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

Und wie unten im Kommentar erwähnt, kann ein Leerzeichen auch ein Problem sein

#Be aware of following:
notWorkingIgnore.* #<-Space
workingIgnore.*#<-Nospace

Ich hatte dieses Problem mit einem .gitignore, das diese Zeile enthält:

lib/ext/

Ich habe gerade festgestellt, dass dieses Verzeichnis tatsächlich eine symbolische Verknüpfung zu einem anderen Ordner 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 nach einem Ordner , aber ein symbolischer Link ist eine Datei , daher wird mein lib-Ordner nicht ignoriert.

Ich habe das behoben, indem ich lib/ext/ durch lib/ext in meinem .gitignore ersetzt habe.


Selbst wenn Sie die Dateien bisher nicht gefunden haben, scheint Git in der Lage zu sein, sie zu "wissen", auch nachdem Sie sie zu .gitignore .

Hinweis: Begehen Sie zuerst Ihre aktuellen Änderungen, oder Sie werden sie verlieren.

Führen Sie dann die folgenden Befehle aus dem obersten Ordner Ihres Git Repos aus:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"

Wie bei den anderen Lösungen, verpflichten Sie sich zuerst und beachten Sie, dass Sie alle nicht festgeschriebenen Änderungen verlieren werden.

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.


Fest. Ok, ich habe die .gitignore Datei in Notepad auf Windows erstellt und es hat nicht funktioniert. Als ich die .gitigore-Datei in Linux anschaute, sah es aus wie organisiertes Kauderwelsch - vielleicht hatte Notepad Unicode geschrieben und nicht ASCII oder was auch immer 8-Bit.

Also habe ich die Datei auf meiner Linux-Box neu geschrieben, und als ich sie wieder in Windows zurückzog, funktioniert es gut! Hurra!


Ich hatte das gleiche Problem. Ich glaube, das Problem war eine CR vs CR + LF Diskrepanz. Ich habe Dinge in meinem .gitignore mit cmd (auf Windows 7) und dem folgenden Befehl gespeichert:

Schlecht:

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

Etc.

Das Problem war, dass dieser Befehl nicht den richtigen Zeilenende-Marker für Git platziert, um die Zeilenumbrüche zu erkennen (entweder CR oder CR + LF, wenn git den anderen erwartet). Ich löste das Problem, indem ich jede neue Zeile in vim (vim zur Rettung!) Manuell ersetzte und es tadellos funktionierte.

Versuchen Sie, Ihre .gitignore in Notepad ++ oder vim (im Idealfall) zu bearbeiten, auch wenn die Datei so aussieht, als wäre sie korrekt formatiert, versuchen Sie, die Zeilenumbrüche zu ersetzen. Klingt seltsam, ich weiß, aber hat für mich gearbeitet. : D


Die .gitignore-Datei funktioniert nicht, wenn Sie über Inline-Kommentare wie folgt verfügen:

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

Ändern Sie es zu diesem:

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

Es gibt ein weiteres Problem mit .gitignore , das passieren kann, besonders für einen Windows-Benutzer, git mag es nicht, wenn Sie .gitignore (wie unity.gitignore ) nennen. Sie sollten es immer .gitignore oder unter Windows .gitignore. wie Windows denkt, dass Sie versuchen, es ohne einen Dateinamen umzubenennen.


Entfernen Sie einfach den Ordner oder die Datei, die zuvor in git committed, indem Sie Befehl folgen, dann gitignore Datei spiegelt die richtigen Dateien.

    git rm -r -f "folder or files insides"

Ich bin gerade auf dieses Problem gestoßen. Der Inhalt in meiner .gitignore-Datei wurde weiterhin in der Liste der nicht geordneten 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 löschte die Ignorierdatei und verwendete dann den Befehl erneut ohne Anführungszeichen und es funktionierte wie erwartet. Ich musste mich nicht mit der Dateicodierung herumschlagen. Ich bin auf einem Win10-Rechner mit Cmder.

Beispiel:

echo node_modules > .gitignore


Wenn die .gitignore-Datei nicht funktioniert (etwas in die .gitignore-Datei einfügen oder etwas aus der .gitignore-Datei entfernen), können Sie die folgenden Tipps überprüfen:

  1. Sie müssen auf die globale Gitignore-Datei achten, die manchmal Ihren Gitignore beeinflussen kann.
  2. Wenn Sie etwas in die .gitignore-Datei einfügen, als die Person, die diese Frage zuerst beantwortet hat:

    git rm -r --cached .
    git add .
    git commit -m "fixed untracked files"  
    
  1. Wenn Sie etwas aus der .gitigore-Datei entfernen. Die obigen Schritte funktionieren nicht für Sie . Sie können dies versuchen:
    git add -f "filetype"
    git commit -m "Refresh removing filetype from .gitignore file."

Der "Dateityp" steht für die Datei oder den Dateityp, den Sie aus der .gitigore-Datei entfernen möchten. Sie möchten den Dateityp erneut verfolgen.


Ich hatte ein kleines Problem damit. Ich war in der Lage, zu dem www.GitHub.com/project zu gehen und die Akte mit der UI zu löschen und diese Änderung dem Vorlagenrepo hinzuzufügen.

Sieht so aus, als hätte ich die Datei dem Repo hinzugefügt, bevor ich ein .gitignore gemacht habe. Das scheint zu funktionieren.


Sieh dir auch das Verzeichnis an , in das du .gitignore steckst. Es sollte im root deines Projekts sein :

./myproject/.gitignore

nicht in

./myproject/.git/.gitignore

Ich bemerkte, dass die Kodierung des .gitignore eine Wirkung hatte - wenn die Datei Unicode war, wurde sie ignoriert, wenn es ASCII war, war es nicht.

Verarbeiten:

  1. Überprüfen Sie den Status: PS> git status
  2. Erstellen Sie eine Funktion für Get-FileEncoding
  3. Testen Sie .gitignore Codierung: PS> Get-FileEncoding .gitignore
  4. Get-FileEncoding in ASCII: PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. Bestätigen: PS> git status

Ohne ein weiteres Commit zu Ihrem Projekt hinzuzufügen, reicht eine Zeile aus, um .gitignore so zu machen, wie es soll:

git rm -r --cached debug.log nbproject

Dadurch wird sie aus dem Repository entfernt, sie bleiben jedoch physisch in normalem Englisch. Sie löscht alle bisherigen Änderungen und ändert ihre Änderungen bei zukünftigen Commits nicht. Eine bessere Erklärung finden Sie here .


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

Öffne deine .gitignore Datei mit Notepad ++ und mach folgendes:

Bearbeiten> EOL-Konvertierung> Windows-Format> Speichern

Versuchen Sie es wieder mit dem Git Status und sehen Sie, ob es für Sie funktioniert hat.

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


Alle Antworten hier sind tatsächlich Workarounds. Sie müssen die Datei .gitignore erstellen, BEVOR Sie git init ausführen, sonst weiß git nie, dass Sie diese Dateien ignorieren müssen, da sie bereits nachverfolgt wurden.

echo .idea/ >> .gitignore
git init

Wenn Sie sich täglich weiterentwickeln, ~/.gitignore_global ich Ihnen, Ihre gewohnten ignorierten Dateien zu Ihrer ~/.gitignore_global Datei ~/.gitignore_global . Auf diese Weise weiß git bereits, welche Dateien Sie (dh "Ihr Benutzer", da es sich um eine Datei in Ihrem Home-Verzeichnis handelt) normalerweise ignorieren.






gitignore