Halten Sie ignorierte Dateien vom Git-Status fern


133

Ich möchte Git daran hindern, ignorierte Dateien git statusanzuzeigen, da jede Menge Dokumentations- und Konfigurationsdateien in der Liste der geänderten, aber nicht aktualisierten Dateien enthalten sind Dateien unzählige die Liste halb unbrauchbar macht.

Ist es normal, dass Git diese Dateien anzeigt?

Ich habe die Ignorierinformationen in eine .gitignoreDatei im Stammverzeichnis des Git-Repositorys eingefügt und sie werden bei der Verwendung nicht hinzugefügt, git add .aber es scheint, dass sie auch nicht vollständig ignoriert werden, da sie in der oben genannten Liste angezeigt werden und nicht in der Liste angezeigt werden gedruckt von git ls-files --others -i --exclude-standard. Nur Dateien, die mit den Mustern in übereinstimmen~/.gitignore .

Könnte es sein, dass ich sie zu einem früheren Zeitpunkt nicht ignoriert habe und sie daher mindestens einmal begangen wurden?

Antworten:


231

Wie ich in diesem Beitrag gefunden habe ,.gitignore funktioniert nur für nicht verfolgte Dateien. Wenn Sie Dateien zum Repository hinzugefügt haben, können Sie:

git update-index --assume-unchanged <file>

oder entfernen Sie sie aus dem Repository von

git rm --cached <file>

Bearbeiten

Dieser Artikel erklärt das auch


4
Update-Index hat bei mir funktioniert. Ähnliches Problem, bei dem der Git-Status ignorierte Dateien anzeigt ... sehr ärgerlich. +1
Abe Petrillo

3
Ich habe immer noch dieses Problem. Keiner der oben genannten Befehle hat bei mir funktioniert. In beiden Fällen sagt Git, dass es keine Kenntnis von den fraglichen Dateien hat, aber sie werden immer noch im Git-Status
angezeigt

5
@Cfreak Zeigt git status -- <file>"Änderungen, die nicht für das Festschreiben bereitgestellt wurden" oder "Nicht verfolgte Dateien" für Ihre Datei an? Ersteres ist, wenn Sie bereits eine Datei im Index haben und ich mehr Informationen benötigen würde, um Ihr Problem zu lösen (erstellen Sie besser eine separate Frage mit angezeigten Git-Nachrichten und posten Sie den Link einfach im Kommentar). Letzteres gilt für Dateien, die (noch) nicht von git verfolgt werden, aber nicht in der .gitignoreDatei enthalten sind und frei zum Index hinzugefügt werden können.
MBO

1
@ MBO - ja, das tut es. Danke dir! Ihr Kommentar hat mir geholfen, diese Antwort zu finden: stackoverflow.com/questions/594757/…, die für mich funktioniert hat.
Cfreak

1
Die erste Option funktioniert wie ein Zauber. Ich habe bereits die zweite ausprobiert und die Dateien wurden als "entfernt" bereitgestellt, und das wollte ich definitiv nicht.
Carrm

16

Dieses Problem ist ebenfalls aufgetreten. Dies liegt wahrscheinlich daran, dass Sie Ihre ignorierten Verzeichnisse / Dateien zu .gitignore hinzugefügt haben, nachdem sie in einem ersten Festschreibungsablauf von GIT als "zu verfolgen" markiert wurden.

Sie müssen den Git-Tracking-Cache also wie folgt leeren:

git rm --cached -r [folder/file name]

Eine ausführlichere Erklärung finden Sie hier: http://www.frontendjunkie.com/2014/12/stop-git-from-tracking-changes-to.html

Mit dem obigen Befehl wurden auch die Reste des Ordners / der Dateien von Ihrem Remote-GIT-Ursprung entfernt. So werden Ihre GIT-Repos sauber.


11

Problem kann sein, dass sich diese Datei noch im Git-Cache befindet. Um dieses Problem zu lösen, muss der Git-Cache zurückgesetzt werden.

Git-Cache zurücksetzen. Dadurch wird alles aus dem Index entfernt.

git rm -r --cached . 

Fügen Sie alle Dateien erneut hinzu:

git add . 

Verpflichten:

git commit -m ".gitignore was fixed." 

2

Das funktioniert sicher,

git rm --cached -r [folder/file name]


1

Ich gehe davon aus, dass Sie kein tmp-Verzeichnis hinzufügen möchten (Visual Studio Platform)

1- Fügen Sie Ihrer lokalen .gitignore-Datei die folgenden Zeilen hinzu

## ignore tmp
/tmp/
./tmp/

3- tmp-Ordner lokal sichern und löschen. (Backup woanders. ZB Desktop?)

4- Übernehmen Sie Änderungen an Local als Sync to Remote (z. B. Github).

Nach diesen Schritten wird Ihr tmp-Verzeichnis nicht mehr hochgeladen.


0

Von man git-lsfiles :

-i, --ignored
Show ignored files in the output. Note that this also reverses any exclude list present.

Persönlich neige ich dazu, Sauerstoffdateien in meinem Quellbaum zu behalten, also habe ich diese einfach zu meinem .gitignore hinzugefügt (der sich im obersten Verzeichnis meines Quellbaums befindet):

docs/*

Hoffentlich hilft das.


0

Die folgenden Schritte gelten nur für nicht verfolgte Dateien . Diese Informationen gelten für folgende Konfiguration:

Platform: linux

Git version: git version 1.8.3.1

Fügen Sie die Liste der zu ignorierenden Dateien in die Datei "Ausschließen" ein, die sich am folgenden Speicherort befindet.

<path till .git directory>/.git/info/exclude

Anfangsinhalt der "Ausschluss" -Datei

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

Endgültiger Inhalt der "Ausschluss" -Datei

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


*.tar
*.gch

0

Gemäß der akzeptierten Antwort können Sie davon ausgehen, dass die Datei unverändert ist , sodass alles, was Sie auf Ihrem lokalen Computer tun, nicht in Ihren Remote-Zweig übernommen wird.

So etwas wie " git update-index --assume-unchanged src/main/resources/config.properties src / main.resources / config.properties" ist ein Beispiel für den Pfad, um diese Datei in Ihrem Projekt zu finden.

Wenn Sie die Datei jetzt vollständig aus Ihrem Repository entfernen möchten, möchten Sie sie möglicherweise verwendenremove cached stattdessen ab `git rm --cached verwenden

Dieses Szenario kann in der folgenden Situation angewendet werden:

Angenommen, ich habe eine Datei, in der ich Passwörter speichere. Ich habe diese Datei ursprünglich mit falschen Details festgeschrieben, nur damit meine Kollegen dieselbe Datei auf ihren Computern haben. Jetzt habe ich jedoch meine korrekten Details auf meinem lokalen Computer hinzugefügt. Wie kann ich verhindern, dass diese Datei versehentlich erneut mit den jetzt korrekten Kennwortdetails festgeschrieben wird?


-1

so was

git --ignored myfolder

Und zeigt den Status nur für meinen Ordner an

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.