" git clean
" ( man ) y git ls-files -i
( man ) gab es Verwirrung bei der Arbeit an oder der Anzeige von ignorierten Pfaden innerhalb eines ignorierten Verzeichnisses, was mit Git 2.32 (Q2 2021) behoben wurde.
Das bedeutet, dass die Version 2021 von die akzeptierte Antwort wäre:
git ls-files -i -c --exclude-from=.gitignore | xargs git rm --cached
^^
Siehe Übergabe b548f0f , dd55fc0 übertragen , aa6e1b2 übergeben , a97c7a8 übergeben , festlegen 2e4e43a , Übergabe b338e9f , 7fe1ffd übertragen , 7f9dd87 übertragen (12. Mai 2021) von Elijah Newren ( newren
) .
Siehe Übergabe 4e689d8 (12. Mai 2021) von Derrick Stolee ( derrickstolee
) .
(Zusammengefasst von Junio C. Hamano -- gitster
-- en 33be431 festlegen , 20. Mai 2021)
ls-files
Fehler bei -i, wenn nicht -o oder -c angegeben sind
Abgezeichnet von: Elijah Newren
ls-files --ignored
( man ) kann entweder zusammen mit --others
o --cached
.
Nachdem ich ein wenig ratlos war und mich in den Code vertieft hatte, nahm ich an, dass ls-files -i
war einfach kaputt und hat nichts gedruckt, und ich hatte einen schönen Patch fertig, als ich endlich merkte, dass -i
kann verwendet werden mit --cached
um verfolgte Ignoranten zu finden.
Das war zwar ein Fehler meinerseits, und ein sorgfältiges Lesen der Dokumentation hätte dies deutlicher machen können, aber ich vermute, dass dieser Fehler auch anderen unterlaufen kann.
Von zwei Anwendungen in unserer Testsuite hat einer der beiden diesen Fehler gemacht.
In t1306.13 gibt es KEINE verfolgten Dateien, und alle Ausschlüsse, die in diesem Test und in früheren Tests erstellt und verwendet wurden, müssen sich daher auf nicht verfolgte Dateien beziehen.
Da sie jedoch nach einem leeren Ergebnis suchten, blieb der Fehler unbemerkt, da ihr fehlerhafter Befehl zufällig auch eine leere Antwort ergab.
-i
wird in den meisten Fällen verwendet mit -o
was bedeuten würde, dass wir einfach -i
implizieren -o
in Ermangelung eines -o
o -c
aber das wäre ein rückwärtsinkompatibler Bruch.
Stattdessen markieren wir einfach -i
entweder ohne eine -o
o -c
als Fehler zu bezeichnen und die beiden relevanten Testfälle zu aktualisieren, um ihre Absicht zu spezifizieren.
Das heißt, ohne -c
erhalten Sie (ab Git 2.32, Q2 2021):
fatal: ls-files -i must be used with either -o or -c
Hinweis: Dies ist ein noch nicht abgeschlossenes Projekt, da es rückgängig gemacht in Git 2.32-rc2 aber fixiert mit 2c9f1bf übertragen , Commit 1df046b (27. Mai 2021) von Junio C. Hamano ( gitster
) .
Siehe 906fc55 übertragen (27. Mai 2021) von Elijah Newren ( newren
) .
Siehe eef8148 festlegen (27. Mai 2021) von Derrick Stolee ( derrickstolee
) .
(Zusammengefasst von Junio C. Hamano -- gitster
-- en 329d63e übergeben , 28. Mai 2021)
dir
: einführen readdir_skip_dot_and_dotdot()
Hilfskraft
Abgezeichnet von: Elijah Newren