git checkout alle Dateien


127

Wie kann ich alle Änderungen in allen Dateien meines Repositorys entfernen?

Angenommen, ich bin in einer Filiale und habe einige Änderungen vorgenommen. git statusGibt eine Reihe von Dateien in "Änderungen, die nicht für das Festschreiben bereitgestellt wurden" zurück, und ich stelle fest, dass ich alle diese Änderungen in allen Dateien entfernen möchte. Wie kann ich das mit einem einzigen Befehl machen?

Ich weiß, dass ich Folgendes tun kann, um nur eine Datei auszuchecken:

git checkout -- <file>

Mir ist aufgefallen, dass git checkout --allein die Liste aller nicht festgeschriebenen Dateien zurückgegeben wird. Ich kann jedoch keinen Weg finden, alle zu überprüfen, so etwas wie git checkout --all.

Ich habe nachgesehen man git checkoutund konnte nichts finden. Außerdem habe ich Git: Checkout alle Dateien außer einer gesehen und versucht git checkout .und auch nicht funktioniert.

Müsste ich es programmgesteuert tun, indem ich die git checkout --Ausgabe durchschleife ?

Antworten:


193

Wenn Sie sich im Stammverzeichnis Ihres Arbeitsverzeichnisses befinden, können Sie git checkout -- .alle Dateien im aktuellen HEAD auschecken und Ihre lokalen Dateien ersetzen.

Sie können auch git reset --hardIhr Arbeitsverzeichnis zurücksetzen und alle Änderungen (einschließlich des Index) ersetzen.


Sind die beiden Optionen gleichwertig (wenn wir auf HEAD zurücksetzen)?
Lucidbrot

10
Nein, es gibt bestimmte Unterschiede. Beispielsweise git checkout -- .werden nur die Änderungen am Status des Index zurückgesetzt. Wenn Sie dem Index bereits Dateien hinzugefügt haben, wird dieser zurückgesetzt. Auf der anderen Seite git reset --hardwird auch der Index weggeworfen. Wenn Sie beispielsweise nicht verfolgte Dateien zum Index hinzugefügt haben (um sie zu verfolgen), werden sie ebenfalls entfernt. git checkoutAußerdem können Sie das Arbeitsverzeichnis nur teilweise wiederherstellen, indem Sie einen spezifischeren Pfad übergeben, was sehr nützlich sein kann.
stupsen


4
@poke Hi Poke, ich bin sicher, git checkout -. funktioniert nicht Ich habe es für mehrere nicht bereitgestellte Änderungen versucht.
Aman

2
andere Befehle, um das gleiche Ergebnis zu erzielen : git checkout --force,git reset --hard
tjalling

3

Ein anderer Weg, den ich nützlich fand, ist:

git checkout <wildcard> 

Beispiel:

git checkout *.html

Allgemeiner:

git checkout <branch> <filename/wildcard>

1
Wenn das Globbing in Ihrer Shell aktiviert ist und sich nicht verfolgte Dateien im Arbeitsverzeichnis befinden, schlägt dies fehl, es sei denn, Sie entkommen dem Sternchen, z . B. git checkout \*oder git checkout '*'.
Josh Cooley
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.