Warum ignoriert Git meine angegebene Datei nicht?

Lesezeit: 6 Minuten

Warum ignoriert Git meine angegebene Datei nicht
Nick.h

Ich habe die folgende Zeile hinzugefügt .gitignore:

sites/default/settings.php

aber wenn ich tippe git status es zeigt die Datei als unstaged Datei.

Was ist das Problem? Alle anderen Muster funktionieren gut.

  • Mögliches Duplikat von Git: Entfernen Sie eine Datei aus dem Repository, ohne sie aus dem lokalen Dateisystem zu löschen

    – Kaskabel

    1. Februar 2012 um 20:31 Uhr

  • Ich hatte das gleiche Problem, dann stellte ich fest, dass ich meine .gitignore-Datei stattdessen auf einem anderen Laufwerk gespeichert hatte :face-palm:

    – Henry

    24. August 2017 um 11:48 Uhr

  • Es ist eine sehr schlechte Idee, Dinge in Ihrem Repository zu behalten und die Änderungen daran zu ignorieren.

    – Jewgenij Afanasjew

    29. August 2017 um 1:23 Uhr

  • Stellen Sie sicher, dass das Repository initialisiert ist

    – Dan

    28. Mai 2021 um 18:31 Uhr

Warum ignoriert Git meine angegebene Datei nicht
Sack

Stellen Sie sicher, dass Ihre .gitignore befindet sich im Stammverzeichnis des Arbeitsverzeichnisses und wird in diesem Verzeichnis ausgeführt git status und Kopieren den Pfad zu der Datei aus der Statusausgabe und fügen Sie ihn in die .gitignore.

Wenn das nicht funktioniert, wird Ihre Datei wahrscheinlich bereits von Git verfolgt. Sie können dies durch die Ausgabe von bestätigen git status. Wenn die Datei nicht in der „Unverfolgte Dateien“ Abschnitt, dann wird es bereits von Git verfolgt und ignoriert die Regel aus dem .gitignore Datei.

Der Grund, Dateien in Git zu ignorieren, ist, dass sie nicht zum Repository hinzugefügt werden. Wenn Sie zuvor eine Datei hinzugefügt haben, die Sie ignorieren möchten, wird sie von Git verfolgt und die entsprechenden Ignorierregeln werden übersprungen. Git tut dies, da die Datei bereits Teil des Repositorys ist.

Um die Datei tatsächlich zu ignorieren, müssen Sie sie untracken und aus dem Repository entfernen. Sie können dies tun, indem Sie verwenden git rm --cached sites/default/settings.php. Dadurch wird die Datei aus dem Repository entfernt, ohne die Datei physisch zu löschen (das ist es, was die --cached tut). Nach dem Festschreiben dieser Änderung wird die Datei aus dem Repository entfernt, und das Ignorieren sollte ordnungsgemäß funktionieren.

  • Was meinst du mit “Stammverzeichnis des Arbeitsverzeichnisses”? Das Verzeichnis, in dem sich das ‘.git’-Repository befindet?

    – Jonathan Leffler

    30. September 2010 um 18:36 Uhr

  • Das Arbeitsverzeichnis ist das Verzeichnis, in dem die .git Verzeichnis befindet und das selbst das Stammverzeichnis des Repositorys ist. Wie wenn Sie ein Repository klonen /xy/ dann /xy/ ist Ihr Arbeitsverzeichnis mit /xy/.git/ Innerhalb.

    – stupsen

    30. September 2010 um 18:39 Uhr

  • Manchmal müssen Sie auch a tun git add . nach dem git rm --cached um den Index ordnungsgemäß neu zu erstellen.

    – Cooper

    5. Januar 2014 um 17:59 Uhr


  • Die Idee, es im Git-Status zu überprüfen, war brillant. Ich habe es immer wieder im Git Staging in Eclipse überprüft und der Pfad war falsch. Danke!

    – walla

    14. April 2016 um 9:04 Uhr

  • Ich musste das Flag -r (rekursiv) hinzufügen, da ich auch verschachtelte Ordner eingecheckt hatte. In meinem Fall bin ich in das Stammverzeichnis meines Git-Ordners gegangen und habe dann den Befehl git rm –cached -r .vs/ ausgeführt, wobei vs der Ordner der obersten Ebene war, den ich aus der Nachverfolgung entfernen wollte.

    – Devologie Ltd

    23. April 2019 um 11:54 Uhr

Ich stoße darauf, es ist eine alte Frage, aber ich möchte, dass diese Datei verfolgt wird, aber sie auf bestimmten Arbeitskopien nicht verfolgt wird, um dies zu tun, können Sie sie ausführen

git update-index --assume-unchanged sites/default/settings.php

  • Das ist eigentlich die Antwort, die ich gesucht habe. Alle anderen Antworten gehen davon aus, dass die Datei mit git add hinzugefügt wurde, was nicht immer der Fall ist. Bei Acquia Cloud soll die .gitignore-Datei settings.php (zum Beispiel) ignorieren, aber die Datei ist beim ersten Commit enthalten. Das Aufheben der Verfolgung der Datei löscht sie einfach aus dem Repository und löscht sie daher von der Live-Site …

    – PatrickS

    5. November 2013 um 9:31 Uhr

  • Hat mir auch geholfen – danke! Abgestimmt. Ich vermute, dass es nur für lokale Git-Repos gilt und nicht bestehen bleiben würde, wenn es von anderen Entwicklern auf Remote verschoben und geklont wurde?

    – Iwan

    31. August 2016 um 18:12 Uhr


  • Ja, es ist nur lokal.

    – Meskalito

    14. November 2016 um 18:56 Uhr

  • Diese Antwort führte mich zu der Git-Funktion, die ich persönlich brauchte, um zu vermeiden, dass meine lokalen Änderungen an einer im Remote-Repository gespeicherten Einstellungsdatei nachverfolgt werden. Der Befehl, den ich am Ende benutzte, war git update-index --skip-worktree filename

    – Kupferaugenkatze

    9. September 2020 um 22:25 Uhr

Bitte verwenden Sie diesen Befehl

git rm -rf --cached .
git add .

Manchmal funktionieren .gitignore-Dateien nicht, obwohl sie korrekt sind. Der Grund, warum Git Dateien ignoriert, ist, dass sie nicht zum Repository hinzugefügt werden. Wenn Sie zuvor eine Datei hinzugefügt haben, die Sie ignorieren möchten, wird sie von Git nachverfolgt, und alle überspringenden Übereinstimmungsregeln werden übersprungen. Git tut dies, weil die Datei bereits Teil des Repositorys ist.

  • 🔴 Bevor Sie diesen Befehl ausführen, empfehle ich, alle Ihre geänderten . das hat bei mir für eine Sauerei gesorgt 🔴

    – Clifford Fajardo

    15. Oktober 2021 um 20:17 Uhr


.gitignore ignoriert nur Dateien, die Sie Ihrem Repository noch nicht hinzugefügt haben.

Wenn Sie a git add ., und die Datei wurde zum Index hinzugefügt, .gitignore wird Ihnen nicht helfen. Sie müssen tun git rm sites/default/settings.php um es zu entfernen, und dann wird es ignoriert.

1646179690 446 Warum ignoriert Git meine angegebene Datei nicht
Floris Devreese

Ich hatte das gleiche Problem.
Dateien definiert in .gitingore wo beim Ausführen als nicht nachverfolgte Dateien aufgeführt git status.

Dies lag daran, dass die .gitignore Datei gespeichert wurde UTF-16LE Codierung und nicht in UTF8 Codierung.

Nach Änderung der Kodierung der .gitignore Datei zu UTF8 es funktionierte.

  • Irgendeine Idee, warum die Dateicodierung wichtig ist? Vielleicht liest Pfad nicht richtig?

    – Chargnn

    2. Dezember 2019 um 20:09 Uhr

1646179690 994 Warum ignoriert Git meine angegebene Datei nicht
J.Leupp

Es gibt Instanzen, z. B. Anwendungskonfigurationsdateien, die ich in Git verfolgen möchte (also funktioniert .gitignore nicht), die ich aber für lokale Einstellungen ändern muss. Ich möchte nicht, dass Git diese Dateien verwaltet oder sie als geändert anzeigt. Dazu verwende ich skip-worktree:

git update-index --skip-worktree path/to/file

Sie können bestätigen, dass Dateien übersprungen wurden, indem Sie Dateien auflisten und nach Zeilen suchen, die mit S für übersprungen beginnen

git ls-files -v | grep ^S

Wenn Sie in Zukunft möchten, dass git die Datei wieder lokal verwaltet, führen Sie einfach Folgendes aus:

 git update-index --no-skip-worktree path/to/file

Mescalito hatte oben eine großartige Antwort, die mich aber auf den richtigen Weg führte

git update-index –assume-unchanged file/to/ignore.php

Hat einen Vertrag mit git, in dem: der Benutzer verspricht, die Datei nicht zu ändern, und Git erlaubt anzunehmen, dass die Arbeitsbaumdatei mit dem übereinstimmt, was im Index aufgezeichnet ist.

Ich ändere jedoch den Inhalt der Dateien, daher ist in meinem Fall –skip-worktree die bessere Option.

Die Website von Toshiharu Nishina lieferte eine hervorragende Erklärung für Skip-Worktree vs. Accept-unchanged: Ignorieren Sie Dateien, die bereits lokal mit Git verwaltet wurden

  • Irgendeine Idee, warum die Dateicodierung wichtig ist? Vielleicht liest Pfad nicht richtig?

    – Chargnn

    2. Dezember 2019 um 20:09 Uhr

1646179691 824 Warum ignoriert Git meine angegebene Datei nicht
Alper Ebicoglu

Was ich tat, um das zu ignorieren Einstellungen.php Datei erfolgreich:

  1. git rm –cached sites/default/settings.php
  2. commit (bis hierhin hat es nicht funktioniert)
  3. manuell gelöschte sites/default/settings.php (das hat funktioniert)
  4. git hinzufügen.
  5. commit (erfolgreich ignoriert)

Ich denke, wenn es die festgeschriebene Datei auf Git gibt, funktioniert das Ignorieren nicht wie erwartet. Löschen Sie einfach die Datei und übergeben Sie sie. Danach wird es ignoriert.

906290cookie-checkWarum ignoriert Git meine angegebene Datei nicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy