552 Stimmen

Dateien vorübergehend aus Git entfernen

Ich habe ein lokales Git auf meinem Rechner eingerichtet. Bei der Initialisierung von git habe ich vorkompilierte Bibliotheken und Binärdateien hinzugefügt. Während meiner Entwicklung möchte ich diese Dateien jedoch nicht ständig einchecken. Ich möchte diese Dateien nicht aus dem Repo entfernen. Gibt es eine Möglichkeit, diese Dateien nicht zu verfolgen, bis ich meine Entwicklung abgeschlossen habe. (Ich denke, ich kann .gitignore nicht verwenden, da es nur für die Dateien funktioniert, die nicht in Git sind. Ich möchte die Verfolgung von Dateien vorübergehend deaktivieren).

8voto

Eric Spreen Punkte 341

Im Git-Buch wird dies in Abschnitt 2.4: "Dinge rückgängig machen" erwähnt. Im Grunde müssen Sie den Status des Index für einige Dateien auf den HEAD-Status zurücksetzen, d.h. auf den Status des letzten Checkouts (oder Commits). Dadurch wird das Einstellen der Datei in den aktuellen Index rückgängig gemacht. Der Befehl für diese Aufgabe lautet git reset .[1]

Der Befehl, den Sie ausführen müssen, lautet also:

git reset HEAD /path/to/file

Die neueren Versionen von git (ich glaube seit 1.6 oder so) geben diesen Befehl (und viele andere) als Tipp beim Ausführen von git status . Diese Versionen sind sehr benutzerfreundlich. Ein persönlicher Tipp: Wenn Sie nur ein paar Dateien bereitstellen, verwenden Sie git add -i . Dadurch wird das interaktive Staging-Tool gestartet, das die Sache besonders einfach macht. Außerdem empfehle ich die Lektüre des Buches, da es sehr ausführlich auf die Verwendung von Git in praktischen Situationen eingeht.

[1] http://www.git-scm.com/book

5voto

Vraj Pandya Punkte 533

Ich gehe davon aus, dass Sie sich fragen, wie man die ALLE die Dateien im Build-Ordner oder im Bin-Ordner, anstatt jede Datei einzeln auszuwählen.

Sie können diesen Befehl verwenden:

git rm -r -f /build\*

Stellen Sie sicher, dass Sie sich im übergeordneten Verzeichnis des Build-Verzeichnisses befinden.
Mit diesem Befehl werden alle Dateien, die sich in den Ordnern bin/ oder build/ befinden, rekursiv "gelöscht". Mit dem Wort "löschen" meine ich, dass Git so tut, als seien diese Dateien "gelöscht", und dass diese Dateien nicht mehr verfolgt werden. In Wirklichkeit markiert Git diese Dateien als "gelöscht".

Stellen Sie sicher, dass Sie Ihre .gitignore für kommende Übertragungen bereithalten.
Dokumentation : git rm

4voto

AlainD Punkte 4252

Eine Alternative zu assume-unchanged es skip-worktree . Letzteres hat eine andere Bedeutung, etwa so: "Git sollte diese Datei nicht verfolgen. Die Entwickler können und sollen lokale Änderungen vornehmen."

In Ihrer Situation, in der Sie Änderungen an (in der Regel großen) Build-Dateien nicht verfolgen möchten, assume-unchanged ist eine gute Wahl.

In der Situation, in der die Datei einen Standardinhalt haben soll und es dem Entwickler freisteht, die Datei lokal zu ändern, sollte er seine lokalen Änderungen nicht an das entfernte Projektarchiv zurückmelden, skip-worktree ist eine bessere Wahl.

Eine andere elegante Möglichkeit ist eine Standarddatei im Repo. Angenommen der Dateiname ist BuildConfig.Default.cfg . Vom Entwickler wird erwartet, dass er diese lokal umbenennt in BuildConfig.cfg und sie können alle erforderlichen lokalen Änderungen vornehmen. Jetzt hinzufügen BuildConfig.cfg a .gitignore damit die Datei nicht verfolgt wird.

Ver diese Frage die in der akzeptierten Antwort einige interessante Hintergrundinformationen enthält.

1voto

divya d Punkte 169

Um alle Untrack-Dateien zu entfernen. Versuchen Sie diesen Terminalbefehl

 git clean -fdx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X