Wie entferne ich gelöschte Dateien aus der Anzeige in meinem lokalen Git-Status?

Lesezeit: 5 Minuten

Benutzer-Avatar
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 add -u .
$> git commit -m "removing deleted files from tracking"
$> git push origin master

Endzustand:

$> 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

Benutzer-Avatar
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

Benutzer-Avatar
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

Benutzer-Avatar
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.

Benutzer-Avatar
Tasneem Haider

git rm <deleted file path> und dann git commit wird das Arbeitsverzeichnis bereinigen.

Benutzer-Avatar
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.

1055020cookie-checkWie entferne ich gelöschte Dateien aus der Anzeige in meinem lokalen Git-Status?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy