it-swarm.com.de

Entferne vorübergehend die Spur der Dateien von Git

Ich habe einen lokalen Git auf meinem Computer 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 zeitweise einchecken. Ich möchte diese Dateien nicht aus dem Repository entfernen. Gibt es eine Möglichkeit, diese Dateien nicht zu verfolgen, bis ich meine Entwicklung abgeschlossen habe? (Ich glaube, ich kann .gitignore nicht verwenden, da es nur für solche Dateien funktioniert, die nicht in git sind. Ich möchte das Tracking von Dateien vorübergehend deaktivieren.)

415
agent.smith

Git Update-Index sollte tun, was Sie wollen

Dadurch wird git mitgeteilt, dass Sie die Änderungen an der Datei ignorieren möchten
git update-index --assume-unchanged path/to/file

Wenn Sie wieder den Überblick behalten möchten
git update-index --no-assume-unchanged path/to/file

Github-Dokumentation: update-index

670
Andy

sie könnten Ihre Dateien danach nicht mehr verfolgen

git rm -r --cached <file>

fügen Sie Ihre Dateien mit

git add -u

sie schieben oder tun, was Sie wollen.

232
cajuuh
git rm --cached

Sie sollten jedoch nicht in erster Linie kompilierte Binärdateien und externe Abhängigkeiten festschreiben. Verwenden Sie stattdessen ein Tool wie Bundler, um diese Elemente einzufügen.

107
Tekkub

Verwenden Sie den folgenden Befehl, um die Verfolgung von Dateien aufzuheben

git rm --cached <file path>
24
Dinesh Vaitage

Das Git-Book erwähnt dies in Abschnitt 2.4: "Undoing Things". Grundsätzlich müssen Sie den Status des Index für einige Dateien auf den Status HEAD zurücksetzen, dh auf den Status der letzten Prüfung (oder Festschreibung). Hierdurch wird das Staging der Datei auf 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 mehr) als Tipp, wenn Sie git status ausführen. Diese Versionen sind sehr benutzerfreundlich. Ein persönlicher Tipp: Wenn Sie nur einige Dateien bereitstellen, verwenden Sie git add -i. Dadurch wird das interaktive Staging-Tool gestartet, was die Sache besonders einfach macht. Außerdem empfehle ich dringend, das Buch zu lesen, da es sehr explizit auf die Verwendung von Git in praktischen Situationen eingeht.

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

7
Eric Spreen

Ich gehe davon aus, dass Sie gefragt werden, wie Sie ALLE die Dateien im Erstellungsordner oder im Bin-Ordner entfernen möchten, 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.
Dieser Befehl "löscht" rekursiv alle Dateien, die sich in den Ordnern bin/oder build/befinden. Mit dem Wort "Löschen" meine ich, dass git so tut, als ob diese Dateien "gelöscht" würden und diese Dateien nicht nachverfolgt würden. Das Git markiert diese Dateien wirklich als im Löschmodus befindlich.

Stellen Sie sicher, dass Sie Ihren .gitignore für kommende Commits bereit haben.
Dokumentation: git rm

5
Vraj Pandya

Keine Antwort auf die ursprüngliche Frage. Aber das könnte jemandem helfen.

Um zu sehen, welche Änderungen Sie vorgenommen haben (wissen, welche Dateien als --assume-unverändert markiert sind)

git ls-files -v

Die resultierende Dateiliste hat ein Präfix mit einem Zeichen (z. B. H oder h). Wenn es sich um ein Kleinbuchstaben (z. B. h) handelt, war die Datei markiert - angenommen-unverändert

5
prime

git Reset [Datei]

Ruft die Datei aus dem Staging-Bereich in das Arbeitsverzeichnis zurück

Ich vergesse oft, meine Knotenmodule zur .gitignore-Datei hinzuzufügen, dies löst das Problem.

1
lordharbar

Das hat bei mir funktioniert

git reset HEAD 'Dateiname'

1
Vivek

So entfernen Sie alle Untrack-Dateien: Probieren Sie diesen Terminalbefehl aus

 git clear -fdx
0
divya d