Wie entferne ich Dateien aus dem Git-Staging-Bereich?
Lesezeit: 6 Minuten
Omega
Ich habe einige meiner Dateien in meinem lokalen Repo geändert, und dann habe ich es getan git add -A was meiner Meinung nach zu viele Dateien zum Staging-Bereich hinzugefügt hat. Wie kann ich alle Dateien aus dem Staging-Bereich löschen?
Danach mache ich es einfach manuell git add "filename".
Hoffentlich suchen Sie danach: stackoverflow.com/questions/1505948/…
– sumitb.mdi
1. November 2013 um 16:07 Uhr
git status sagt Ihnen bereits genau, was zu tun ist, wenn Sie Dateien aus der Staging-Umgebung entfernen möchten.
– Michael Foukarakis
1. November 2013 um 16:11 Uhr
@MichaelFoukarakis Git-Status ist nicht so hilfreich, wenn Sie ein ganzes Verzeichnis aus der Staging-Umgebung entfernen möchten, wenn es das Terminal mit Ausgaben überschwemmt (z. B. node_modules).
– weißer Turm6
28. Juli 2014 um 21:42 Uhr
Anstatt alle hinzuzufügen, möchten Sie sich in Zukunft vielleicht damit vertraut machen git add -p oder git add --patch (sie sind gleich). Mit diesem Flag können Sie interaktiv auswählen, welche Dateien oder einzelnen Änderungen Sie inszenieren möchten – Sie können dann viel feiner granulieren, welche Arbeit Sie in den Commit aufnehmen.
– Gabe
24. Januar 2018 um 15:35 Uhr
Ash Wilson
Sie können Dateien aus dem Index entfernen, indem Sie verwenden
git reset HEAD -- path/to/file
So wie git addkönnen Sie Dateien rekursiv nach Verzeichnis und so weiter aus der Staging-Umgebung entfernen. Um also alles auf einmal aus der Staging-Umgebung zu entfernen, führen Sie dies im Stammverzeichnis Ihres Repositorys aus:
git reset HEAD -- .
Auch für zukünftige Referenzzwecke die Ausgabe von git status wird Ihnen die Befehle mitteilen, die Sie ausführen müssen, um Dateien von einem Zustand in einen anderen zu verschieben.
$ git reset HEAD -- . produziert fatal: Failed to resolve 'HEAD' as a valid ref. Beachten Sie, dass ich nie einen Commit gemacht habe; es ist das erste git add nach dem git init
– Patrizio Bertoni
25. Februar 2015 um 16:13 Uhr
Sie können auch verwenden git reset @.
– Alex
9. Juni 2016 um 9:18 Uhr
@alex Ist es besser als einfach nur git reset?
– Antony Hatchkins
10. September 2016 um 17:56 Uhr
@AntonyHatchkins @ ist synonym mit HEAD.
– Alex
12. September 2016 um 7:27 Uhr
das ist besser git reset oder git restore –staged
– Tejas Jadhav
8. März 2021 um 16:54 Uhr
Antony Hatchkins
Verwenden
git reset
um alle bereitgestellten Dateien aufzuheben.
Darf ich fragen, wie sich das unterscheidet git reset HEAD -- oder ist es einfach eine prägnantere Art, dieselbe Operation durchzuführen?
– ProNotion
17. Januar 2018 um 10:52 Uhr
@ProNotion Reset verwendet HEAD standardmäßig. Was ist der Zweck von denen -- in deiner git reset HEAD -- ?
– Antony Hatchkins
18. Januar 2018 um 9:36 Uhr
@AntonyHatchkins hätte ein Punkt (Punkt) folgen sollen und wurde dem Beispiel in der akzeptierten Antwort entnommen.
– ProNotion
22. Januar 2018 um 12:33 Uhr
@ProNotion Entschuldigung, ich habe Sie falsch verstanden. git reset HEAD -- . unterscheidet sich darin, dass es nur Dateien im aktuellen Verzeichnis und darunter zurücksetzt, während git reset setzt alle Dateien im Projekt zurück.
– Antony Hatchkins
23. Januar 2018 um 10:07 Uhr
max
Wenn Sie bereits eine Reihe unerwünschter Dateien übertragen haben, können Sie sie aus der Staging-Umgebung entfernen und Sagen Sie git, sie als gelöscht zu markieren (ohne sie tatsächlich zu löschen) mit
git rm --cached -r .
--cached weist es an, die Pfade aus dem Staging und dem Index zu entfernen, ohne die Dateien selbst zu entfernen und -r arbeitet rekursiv mit Verzeichnissen. Sie können dann git add alle Dateien, die Sie verfolgen möchten.
Ich nehme an, es ist “git rm — “.
– Alexander Mills
25. November 2014 um 9:22 Uhr
Es gibt einen schwerwiegenden Fehler, Dateien nicht mit “git rm –” zu entfernen.
– Alexander Mills
25. November 2014 um 9:23 Uhr
@AlexMills Ich aktualisiere meine Antwort, um die tatsächlichen Optionen für zu erwähnen rm um alle Dateien aus der Staging-Umgebung zu entfernen.
– max
25. November 2014 um 15:18 Uhr
Ich habe dies an einer einzelnen Datei wie dieser versucht: “git rm –cached my/file.java” und ich sehe diese Datei immer noch im Staging-Bereich, aber als gelöscht! @Max Wenn Sie diesen Befehl ausführen, werden Ihre Dateien tatsächlich gelöscht oder nur nicht bereitgestellt? Wenn Sie nicht nach diesem Verhalten suchen, würde ich mit Antwort gehen.
– Orwell Hindenberg
12. Juni 2015 um 17:21 Uhr
@OrwellHindenberg danke für den Hinweis! --cached ist wirklich, das Verfolgen von Dateien zu stoppen, die Sie bereits festgeschrieben haben. Die Datei wird also nicht wirklich gelöscht, aber Git denkt, dass es so ist. Ich habe dies in meiner Antwort klargestellt.
– max
13. Juni 2015 um 2:40 Uhr
Verwenden Sie Folgendes, um eine bestimmte Datei aus dem Staging-Bereich zu entfernen:
git restore --staged <individual_file>
Oder verwenden Sie Folgendes, um alle Dateien zu entfernen, die derzeit bereitgestellt werden:
git restore --staged .
In Ihrem Git-Bash-Terminal können Sie nach dem Hinzufügen von Dateien zum Staging-Bereich a ausführen git status und der Befehl wird Ihnen über den aktuellen Staging-Dateien angezeigt:
Danke für deine tolle verwandte Antwort.
– AmerllicA
14. April 2021 um 22:05 Uhr
Dies ist die von Git selbst empfohlene Methode zum Unstaging von Dateien
– Aris
20. Oktober 2021 um 9:43 Uhr
Schatten
Du könntest benutzen
git reset HEAD
Fügen Sie dann die gewünschten Dateien hinzu
git add [directory/]filename
Mit überschüssigen Ordnern, git status wird es dir sagen Arbeitsverzeichnis sauber – Lügen! git clean -df hat es geschafft, danke.
– Löwe
30. Mai 2016 um 1:26 Uhr
Beachten Sie, dass git clean -df löscht Dateien dauerhaft. Auf UNIX-ähnlichen Systemen wird es aufrufen unlink() und Ihre gelöschten Dateien können nicht wiederhergestellt werden.
– Hanxue
31. Mai 2016 um 7:55 Uhr
Das OP fragt nach dem Unstaging der Dateien. Sie raten ihm, die Dateien zu löschen. Ich würde vorschlagen, dass Sie sich über den Staging-Bereich informieren, bevor Sie antworten.
– Antony Hatchkins
10. September 2016 um 17:59 Uhr
Die Frage wurde einige Monate, nachdem ich sie beantwortet hatte, erneut bearbeitet. Dadurch können einige Antworten für den Fall ungültig werden.
– Schatten
30. Januar 2018 um 17:13 Uhr
OK. Gekürzt und gereinigt.
– Schatten
19. Februar 2018 um 11:26 Uhr
Akash Bisariya
Um alle Dateien aus dem Staging-Bereich zu entfernen, verwenden Sie – git reset
Um eine bestimmte Datei zu entfernen, verwenden Sie – git reset "File path"
Mit überschüssigen Ordnern, git status wird es dir sagen Arbeitsverzeichnis sauber – Lügen! git clean -df hat es geschafft, danke.
– Löwe
30. Mai 2016 um 1:26 Uhr
Beachten Sie, dass git clean -df löscht Dateien dauerhaft. Auf UNIX-ähnlichen Systemen wird es aufrufen unlink() und Ihre gelöschten Dateien können nicht wiederhergestellt werden.
– Hanxue
31. Mai 2016 um 7:55 Uhr
Das OP fragt nach dem Unstaging der Dateien. Sie raten ihm, die Dateien zu löschen. Ich würde vorschlagen, dass Sie sich über den Staging-Bereich informieren, bevor Sie antworten.
– Antony Hatchkins
10. September 2016 um 17:59 Uhr
Die Frage wurde einige Monate, nachdem ich sie beantwortet hatte, erneut bearbeitet. Dadurch können einige Antworten für den Fall ungültig werden.
– Schatten
30. Januar 2018 um 17:13 Uhr
OK. Gekürzt und gereinigt.
– Schatten
19. Februar 2018 um 11:26 Uhr
Andrea Carraro
Es ist sehr einfach:
So überprüfen Sie den aktuellen Status einer Datei im aktuellen Verzeichnis, unabhängig davon, ob sie bereitgestellt wird oder nicht:
git status
Staging beliebiger Dateien:
git add . für alle Dateien im aktuellen Verzeichnis
git add <filename> für bestimmte Datei
Unstaging der Datei:
git restore --staged <filename>
9245400cookie-checkWie entferne ich Dateien aus dem Git-Staging-Bereich?yes
Hoffentlich suchen Sie danach: stackoverflow.com/questions/1505948/…
– sumitb.mdi
1. November 2013 um 16:07 Uhr
git status
sagt Ihnen bereits genau, was zu tun ist, wenn Sie Dateien aus der Staging-Umgebung entfernen möchten.– Michael Foukarakis
1. November 2013 um 16:11 Uhr
@MichaelFoukarakis Git-Status ist nicht so hilfreich, wenn Sie ein ganzes Verzeichnis aus der Staging-Umgebung entfernen möchten, wenn es das Terminal mit Ausgaben überschwemmt (z. B. node_modules).
– weißer Turm6
28. Juli 2014 um 21:42 Uhr
Anstatt alle hinzuzufügen, möchten Sie sich in Zukunft vielleicht damit vertraut machen
git add -p
odergit add --patch
(sie sind gleich). Mit diesem Flag können Sie interaktiv auswählen, welche Dateien oder einzelnen Änderungen Sie inszenieren möchten – Sie können dann viel feiner granulieren, welche Arbeit Sie in den Commit aufnehmen.– Gabe
24. Januar 2018 um 15:35 Uhr