2014-06-25 17 views
40

In der Wurzel meines Projekts habe ich einen Ordner foo. Im Ordner foo habe ich einen Ordner bar. Ich möchte alle Änderungen an allen Dateien in meinem Ordner bar ignorieren. Ich habe dies in meinem gitignore:gitignore ignoriert Ordner

/foo/bar 

Der Ordner markiert ist: es existiert, und es hat die Dateien ignoriert werden. gitignore ist commit ted. Jedoch habe ich eine Datei, wo ich eine Verbesserung mache und in meinem bar Ordner ist. Als ich

git status 

in meinem git bash geben sehe ich die Datei, die ignoriert werden sollten. Was könnte der Grund sein und wie kann ich alle Dateien in meinem Bar-Ordner erfolgreich ignorieren?

Beachten Sie, dass die Dateien zuvor mit der gleichen Zeile ignoriert wurden, aber ich musste diese Zeile vorübergehend auf commit etwas auf dem Server entfernen. Nach dem commit setze ich die Linie in die gitignore zurück. Das war vor einer Weile, aber jetzt habe ich beobachtet, dass die Dateien in git status sein werden. Ich würde erwarten, in der Lage zu sein, die ignorierten Dateien zu ändern, ohne dass sie in der git status erscheinen.

+0

In Zukunft müssen Sie Ihre ignores nicht ändern, um etwas zu ergänzen, das ignoriert wird. 'git add -f ignored-file' fügt eine Datei hinzu, auch wenn sie ignoriert wird. – Chris

+0

Was gibt 'git status foo/bar/file-that-be-ignored'? – Chris

+0

Die Datei, die ignoriert werden sollte, wenn eine Änderung aufgetreten ist. Ich vermisse offensichtlich etwas, aber nach meinem Wissen sollte die Liste des Git-Status in diesem Fall leer sein, vorausgesetzt, dass/foo/bar in .gitignore vorhanden ist. –

Antwort

96

Ich schätze, dieser Ordner wurde in git zuvor überprüft? Versuchen Sie, git rm --cached <folder> auszuführen, und überprüfen Sie erneut.

EDIT: Der Code hatte einen kleinen Fehler drin. Die Lösung war: git rm -r --cached <folder> Diese Antwort hat mich jedoch zur Lösung geführt, also werde ich sie akzeptieren.

UPDATE: Die -r ist erforderlich.

+0

Dies wird den Ordner vollständig aus der (aktuellen Version des) Repo entfernen. OP möchte, dass der Ordner dort ist, aber neue Änderungen sollten nicht verfolgt werden. – Gareth

+0

Leider muss ich das Akzeptieren entfernen. Diese Lösung entfernte die Remoteversionen der Dateien, wenn sie gedrückt wurden. Ich möchte Gitignore einrichten, um alle Dateien eines Ordners zu ignorieren, nicht um sie aus der Ferne zu entfernen. Ist das möglich? Ich habe die Lösung rückgängig gemacht. –

+0

Ich möchte den Remote-Server behalten seine Version der Dateien –

1

Für mich war die akzeptierte Antwort Teil der Lösung, nicht die gesamte Lösung. Vielleicht waren die anderen Schritte, die ich veröffentlichen werde, offensichtlich, aber ich habe sie zuerst vermisst. Hier ist die Schritte, die ich nahm, um meine .gitignore Datei zu sichern den Ordner ignoriert ich es wollte, ignorieren:

  1. Änderungen Commit, die Sie benötigen zu beheben/Wechsel.
  2. Führen Sie diesen Befehl ein: git rm -r --cached . (die alles aus dem Git-Index um Ihre Git Repository zu aktualisieren entfernt)
  3. Dann diesen Befehl ausführen: git add .
  4. Schließlich (alles zurück zum Repo hinzufügen), begeht diese Änderungen mit git commit -m ".gitignore Fixed"

Sie können den Link zu dem Artikel finden, von wo aus ich here die Lösung gefunden.

+0

Dies ist keine praktikable Lösung auf der Grundlage der ursprünglichen Frage. @ lagos-arpad hat gezielt nach einem Unterverzeichnis und nicht nach dem gesamten Projekt gefragt. Ihre Lösung entfernt alles von der Stammebene des Git-Repositorys und dies ist kein empfohlener Ansatz, um mit diesem Problem umzugehen. – justinhartman

+0

Auch wenn es nur ein Unterverzeichnis ist, funktionierte diese Lösung für mich, da ich nur mit einer Datei zu tun hatte. Können Sie bitte erläutern, warum es nicht empfohlen wird? – sikanderBabwani

Verwandte Themen