Ich habe einige Dateien gelöscht und der Git-Status wird wie folgt angezeigt.
Ich habe mich verpflichtet und gepusht.
GitHub zeigt weiterhin die gelöschten Dateien im Repository an. Wie kann ich Dateien im GitHub-Repository löschen?
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: modules/welcome/language/english/kaimonokago_lang.php
# deleted: modules/welcome/language/french/kaimonokago_lang.php
# deleted: modules/welcome/language/german/kaimonokago_lang.php
# deleted: modules/welcome/language/norwegian/kaimonokago_lang.php
Wenn ich benutze git rm
, gibt es folgendes.
usage: git rm [options] [--] <file>...
-n, --dry-run dry run
-q, --quiet do not list removed files
--cached only remove from the index
-f, --force override the up-to-date check
-r allow recursive removal
--ignore-unmatch exit with a zero status even if nothing matched
Antworten:
aktualisiert alle Ihre Änderungen
quelle
Sei sehr vorsichtig
git rm .
; Möglicherweise wird mehr entfernt, als Sie möchten. Natürlich können Sie sich erholen, aber es ist einfacher, dies nicht tun zu müssen.Am einfachsten wäre:
Sie können keine Shell-Platzhalter verwenden, da die Dateien nicht vorhanden sind. Sie können jedoch Folgendes verwenden (zumindest in Bash):
Oder überlegen Sie:
Dies nimmt die Ausgabe von
git status
, druckt standardmäßig nichts (sed -n
), aber in Zeilen, die beginnen# deleted:
, wird das#
und das entferntdeleted:
und es wird gedruckt, was übrig bleibt;xargs
sammelt die Argumente und stellt sie einemgit rm
Befehl zur Verfügung. Dies funktioniert für eine beliebige Anzahl von Dateien, unabhängig von der Ähnlichkeit (oder Unähnlichkeit) der Namen.quelle
git diff --diff-filter=D --name-only -z | xargs -0 git rm
ist ein zuverlässigerer Ansatz als der Versuch zu analysieren,git status
der benutzerorientiert ist und nicht garantiert wird, dass er über zukünftige Versionen stabil ist.git diff
(was ich nicht hatte, nachdem ich es vorher nicht gebraucht hatte). Vielen Dank!git ls-files --deleted | xargs git rm
habe den Trick für mich gemacht.Eine andere Version der Antwort von ByScripts ist
Dadurch werden NUR die gelöschten Dateien aus dem Git entfernt.
Es kann auch zum Hinzufügen von NUR geänderten Dateien verwendet werden.
Diese Befehle funktionieren auch mit Gitbash für Windows.
quelle
git ls-files
mit Status gelöscht oder geändert ist so hilfreich.'git add --update (or -u)'
ohne Pfadargument aus einem Unterverzeichnis des Baums ändert sich in Git 2.0 und sollte nicht mehr verwendet werden. Um Inhalt für den gesamten Baumgit add --update :/
hinzuzufügen, führen Sie Folgendes aus : (oder git add -u: /) Um den Befehl auf das aktuelle Verzeichnis zu beschränken, führengit add --update .
Sie Folgendes aus : (oder git add -u.) Bei der aktuellen Git-Version ist der Befehl auf das beschränkt aktuelles Verzeichnissrc/my spaced directory/myfile
. Dies kann individuell behandelt werden, aber wie kann es mit den Befehlen in dieser Antwort behandelt werden?Aktualisieren Sie alle vorgenommenen Änderungen:
Die gelöschten Dateien sollten von nicht bereitgestellt (normalerweise rote Farbe) zu bereitgestellt (grün) wechseln. Dann verpflichten Sie sich, die gelöschten Dateien zu entfernen:
quelle
Die beste Lösung, wenn Sie sich nicht für das Staging geänderter Dateien interessieren, ist die Verwendung
git add -u
wie von mshameers und / oder pb2q angegeben .Wenn Sie nur gelöschte Dateien entfernen möchten, aber keine geänderten Dateien bereitstellen möchten, sollten Sie das
ls-files
Argument mit der--deleted
Option verwenden (Sie müssen keinen regulären Ausdruck oder andere komplexe Argumente / Optionen verwenden):quelle
git add -A
löst dieses Problem ... nur für den Fall, dass jemand es in Zukunft wissen möchte. Überprüfen Sie die folgende AntwortJa,
git rm <filename>
wird den gelöschten Status einer Datei<filename>
bereitstellen , wobei es sich um ein Glob-Muster handeln könnte:Dann können Sie festschreiben.
git commit -a
wird dies auf einmal tun, wenn Sie wollen.Sie können auch
git add -u
alle Änderungen, einschließlich aller gelöschten Dateien, bereitstellen und dann festschreiben.quelle
git add -u
genau das zu sein, wonach wir suchen - wenn Sie viele Löschungen vornehmen, möchten Sie alle Löschungen festschreiben, was der einfachste und "Standard" -Methode zu sein scheint (dh ohne fallspezifische Globs oder komplexe Shell-Analyse) xargs). Gibt es einen Grund, warum wir dies nicht verwenden möchten, außer der Tatsache, dass alle Änderungen auf einmal hinzugefügt werden?Wenn ich viele Dateien gelöscht habe, die nicht für das Festschreiben bereitgestellt wurden, können Sie
git rm
sie alle in einer Show anzeigen mit:Wie bereits erwähnt, seien Sie vorsichtig mit
git rm
.quelle
Versuche dies:
quelle
Sie können verwenden
Nachdem Sie Dateien manuell gelöscht hatten.
quelle
Sie können ein Shell-Skript erstellen, das beim Ausführen alle Ihre Dateien entfernt:
Das erstellte Skript ist
remove.sh
und enthält die vollständige Liste dergit rm
Befehle.quelle
quelle
quelle
Wenn Sie alle mit "git rm" löschen möchten. Das ist was ich mache:
Diese Abfrage listet alle Dateien auf, die entfernt wurden, und löscht sie aus Ihrem Git-Repository. Ich hoffe es hilft.
quelle
Die eingebaute Clean-Funktion kann auch hilfreich sein ...
quelle
Ich hatte dieses Problem mit Geisterdateien in meinem Repo, nachdem ich sie gelöscht hatte und auf diesen ordentlichen Befehl gestoßen war!
git add -A
Es ist im Wesentlichen dasselbe wie
git add -a
undgit add -u
kombiniert, aber es unterscheidet zwischen Groß- und Kleinschreibung. Ich habe es von diesem fantastischen Link erhalten (dieser Link verweist jetzt auf die Version auf archive.org, da das Original ab Juni 2016 in eine Spam- / Phishing-Seite konvertiert wurde).quelle
Hier erfahren Sie, wie Sie gelöschte Dateien erkennen und im Rahmen des nächsten Commits löschen. Alle Lösungen in diesem Thread haben unterschiedliche Vorzüge. Diese unten stehende Lösung befasst sich speziell mit dem Problem von Dateinamen mit Leerzeichen.
Stellen Sie sicher, dass Sie dies mit der Option --dry-run von git testen, bevor Sie Folgendes ausführen:
Erläuterung:
Dies druckt so etwas wie D "/ Pfad zu einem Ordner / Pfad zu einer Datei" aus, was nur passiert, wenn die Pfadnamen Leerzeichen enthalten
stimmen nur mit Zeilen überein, die mit "D" beginnen
Entfernen Sie "D" von der Vorderseite jeder Zeichenfolge
Entfernen Sie gegebenenfalls Anführungszeichen
Definieren Sie Dateinamenvariablen als {} Ausführen des Dateinamens unter git rm in einfachen Anführungszeichen, um sicherzustellen, dass Dateinamen mit Leerzeichen unterstützt werden.
quelle