Wie entferne ich gelöschte Dateien aus der Anzeige in meinem lokalen Git-Status?
Lesezeit: 5 Minuten
Uwe
Ein Entwickler hat ein Bildverzeichnis auf dem Server hinzugefügt, ohne diesen Ordner zur .gitignore-Datei hinzuzufügen. Als ich einen Git-Pull durchführte, wurden diese Dateien (Hunderte von Dateien) gezogen. Ich habe den Ordner zu .gitignore auf dem Server hinzugefügt, aber nicht zu meinem lokalen System. Ich habe dann die Dateien lokal (dauerhaft) gelöscht. Wenn ich einen Git-Status mache, werden alle diese gelöschten Dateien immer noch angezeigt. Wie kann ich verhindern, dass sie angezeigt werden?
Aktualisieren:
danke für die tolle hilfe. Damit kein Missverständnis entsteht: Ich möchte die Dateien auf dem Server behalten; Ich möchte sie nur aus Git entfernen.
Sie möchten also, dass sie dauerhaft aus dem Verlauf des Repos entfernt werden, während die nicht verfolgten Dateien in Ihrem Arbeitsverzeichnis verbleiben?
– Andy
10. November 2011 um 21:52 Uhr
Schauen Sie sich den Github-Link in meiner Antwort unten an.
– Andy
10. November 2011 um 22:09 Uhr
Ich finde, dass dies die einfachste Art ist, die Aufgabe zu erledigen.
$> git add -u <directory-path> (or you may use --update)
Originalzustand :
$> git status .
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: .ipynb_checkpoints/Untitled-checkpoint.ipynb
deleted: CVPR 1 hr tute-Backup.ipynb
deleted: cifar10-test.t7
deleted: cifar10-train.t7
deleted: cifar10torchsmall.zip
deleted: create_advr.lua
deleted: criterion_cifar10_lr_0.001_epoch_13.t7
deleted: train_cifar10.lua
deleted: trained_net_cifar10_lr_0.001_epoch_13.t7
Um also alle gelöschten Dateien aus meinem aktuellen Verzeichnis zu entfernen, verwende ich.
$> git status .
On branch master
nothing to commit, working directory clean
Hoffe das hilft 🙂
Was ist der Unterschied zwischen dieser Methode und der Verwendung von git rm?
– Ozean800
17. Juli 2017 um 23:58 Uhr
Ich sehe keinen Unterschied in der Ausgabe, also denke ich, dass Sie das verwenden können, was am besten zu Ihnen passt (jemand bitte korrigiert mich, wenn ich falsch liege). git add fügt auch die gelöschten Dateien zum Tracking hinzu, genau wie git rm.
– NightFury13
21. Juli 2017 um 11:16 Uhr
@ocean800 @NightFury13 Verwenden git add -u . Sie müssen nicht die Namen aller Dateien angeben, die Sie löschen möchten.
– mmai
21. September 2020 um 9:44 Uhr
Mattball
Das müssen Sie wahrscheinlich git rm die gelöschten Dateien. Aus Pro Git:
Dateien entfernen
Um eine Datei aus Git zu entfernen, müssen Sie sie aus Ihren nachverfolgten Dateien entfernen (genauer gesagt aus Ihrem Staging-Bereich entfernen) und dann festschreiben. Das git rm Der Befehl erledigt dies und entfernt die Datei auch aus Ihrem Arbeitsverzeichnis, damit Sie sie beim nächsten Mal nicht als nicht verfolgte Datei sehen.
Wenn Sie die Datei einfach aus Ihrem Arbeitsverzeichnis entfernen, wird sie unter „Geändert, aber nicht aktualisiert“ angezeigt (d. h. unstagiert) Bereich Ihrer git status Ausgang:
$ rm grit.gemspec
$ git status
# On branch master
#
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
#
# deleted: grit.gemspec
#
Dann, wenn Sie laufen git rmwird die Entfernung der Datei inszeniert:
$ git rm grit.gemspec
rm 'grit.gemspec'
$ git status
# On branch master
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: grit.gemspec
#
Beim nächsten Commit ist die Datei verschwunden und wird nicht mehr nachverfolgt. Wenn Sie die Datei geändert und bereits zum Index hinzugefügt haben, müssen Sie das Entfernen mit erzwingen -f Möglichkeit. Dies ist eine Sicherheitsfunktion, um ein versehentliches Entfernen von Daten zu verhindern, die noch nicht in einem Snapshot aufgezeichnet wurden und die nicht von Git wiederhergestellt werden können.
Danke! Wenn Sie also die Änderungen festschreiben, wird die Datei nicht aus dem Remote-Repository entfernt, richtig?
– Uwe
10. November 2011 um 20:41 Uhr
@mototribe Sehen Sie sich meine Antwort an, um zu erfahren, was Sie tun müssen, um die Dateien dauerhaft aus dem Verlauf des Repositorys zu entfernen.
– Andy
10. November 2011 um 20:45 Uhr
Markus Fischer
Aktualisiert nach Ihren Kommentaren.
Wenn Sie die Bilder auf dem Server behalten, aber die Dateien aus Git entfernen möchten, müssen Sie die hinzufügen --cached Flagge zu git rm.
cd images
git rm --cached *
cd ..
echo "images" > .gitignore
git add .
git commit -m "removed image files from git only"
git push
Wenn Sie möchten, dass die Leute das Bilderverzeichnis erstellen, wenn sie ziehen (aber keine Dateien haben), dann fügen Sie a hinzu images/.gitignore mit der einzigen Zeile !.gitignore
Beachten Sie, dass sie dadurch nicht aus dem Verlauf entfernt werden. Dafür würde ich mir diese SO-Antwort ansehen
Entschuldigung, ich war nicht klar, ich möchte die Dateien auf dem Server behalten, entfernen Sie sie einfach aus dem Git-Tracking
– Uwe
10. November 2011 um 22:04 Uhr
Andy
Da sie bereits an das Repository übergeben wurden, ist es ein bisschen mehr Arbeit, aber immer noch machbar.
Die beste exemplarische Vorgehensweise, die ich zu diesem Verfahren gefunden habe, ist Githubs Leitfaden zu Entfernen sensibler Daten. Da Sie die Dateien behalten möchten, müssen Sie vor und nach der Anleitung einen Schritt ausführen.
Bevor Sie diesen Vorgang starten, kopieren Sie die Dateien aus Ihrem Arbeitsverzeichnis. Wenn Sie mit dem Löschen des Repos fertig sind, kopieren Sie sie wieder hinein und fügen Sie sie zu Ihrer .gitignore hinzu.
Fügen Sie den Ordner auch lokal zu Ihrer .gitignore-Datei hinzu.
Tasneem Haider
git rm <deleted file path> und dann git commit wird das Arbeitsverzeichnis bereinigen.
Simón Ramírez Amaya
Sie können verwenden
git checkout -- < file path >
Wenn Sie danach den Git-Status verwenden, wird Ihre Datei nicht als geändert angezeigt.
10550200cookie-checkWie entferne ich gelöschte Dateien aus der Anzeige in meinem lokalen Git-Status?yes
Sie möchten also, dass sie dauerhaft aus dem Verlauf des Repos entfernt werden, während die nicht verfolgten Dateien in Ihrem Arbeitsverzeichnis verbleiben?
– Andy
10. November 2011 um 21:52 Uhr
Schauen Sie sich den Github-Link in meiner Antwort unten an.
– Andy
10. November 2011 um 22:09 Uhr