Ich habe ein Projekt, in dem ich Videodateien mit Git LFS gespeichert habe. Jetzt hatte ich einige Probleme mit meinem Build-Server, der Git LFS noch nicht unterstützt. Da es sich um einen externen Dienst handelt, kann ich den Erstellungsprozess nicht wirklich beeinflussen und möchte daher die Dateien von unter Git LFS zurück auf "normalen" Git verschieben. Ich habe es geschafft, die Dateitypen mit zu entfernen, git lfs untrack '<file-type>'
aber es wird git lfs ls-files
immer noch eine Liste der zuvor hinzugefügten Dateien angezeigt .
Ich stelle mir vor, ich könnte die Dateien entfernen, die Änderungen pushen und sie dann manuell wieder hinzufügen, aber ist dies wirklich die empfohlene Vorgehensweise?
.gitattributes
ist richtig eingerichtet, um die gewünschten Dateien zu verfolgen, diese Lösung hat wunderbar funktioniert. Viel einfacher als einige der anderen veröffentlichten Lösungen.In Ausgabe 641 wird dasselbe Problem erwähnt.
Die Antwort war:
Danach werden alle hinzugefügten Dateien direkt an git gesendet.
Das war aber nicht so einfach:
Update März 2016, die Ausgabe 957 zeigt eine mögliche Lösung durch
tstephens619
:Der Betreuer
ttaylorr
fügt hinzu:quelle
git rm --cached <file>
->git add <file>
-> istgit commit
, solange Sie das Tracking korrekt eingerichtet haben.uninit
Befehl. Stattdessen musstegit lfs uninit
ich verwendengit lfs uninstall
.Ab Git 2.16 (veröffentlicht am 17. Januar 2018) können Sie dies problemlos mit der
--renormalize
Flagge vongit add
:Aus Gits Dokumentation :
Der Schlüsselteil hier ist "alle verfolgten Dateien". Normalerweise werden Filter nur ausgeführt, wenn eine Git-Operation eine Datei im Arbeitsbaum ändert. Das Ändern der LFS-Whitelist
.gitattributes
ist keine Git-Operation, sodass der Index nach der Ausführung in einem inkonsistenten Zustand endetgit lfs untrack
. Durch Ausführengit add --renormalize .
wird Git angewiesen, Filter für jede Datei im Repository erneut auszuführen, wodurch sichergestellt wird, dass alle Dateien, die sich in LFS befinden sollten, vorhanden sind - und dass alle Dateien, die nicht vorhanden sein sollten, nicht vorhanden sind.quelle
Ich hatte Probleme beim Ausführen von Schritten in Windows. Um alle von git lfs verfolgten Dateien zu entfernen und die Originaldatei wiederherzustellen, habe ich in git bash Folgendes getan:
.Gitattributes entfernt
git lfs ls-files | cut -d ' ' -f 3 > lfs-files.txt
Führen Sie das folgende Snippet aus:
Snippet:
quelle
Sie können nichts wirklich aus GIT LFS entfernen, und obwohl die hier vorgestellten Lösungen möglicherweise (mit Änderungen) funktionieren, erfordern sie viel Aufwand und können Nebenwirkungen auf Ihr Repository haben.
Wenn Sie hier angekommen sind, sollten Sie sich fragen, ob Sie Ihre großen Dateien mit GIF LFS verwalten möchten und ob GIT selbst (das bei der Verwaltung großer Dateien von Natur aus schlecht ist, da es sich um ein verteiltes Versionskontrollsystem handelt) eine gute Wahl war.
Wenn Sie viele große Dateien haben und eine einzelne Organisation sind, die an Ihrem Projekt arbeitet, funktioniert Subversion möglicherweise besser für Sie.
quelle