Wie können Sie eine Git-Datei auf ihre Staging-Area-Version zurücksetzen?

80

Angenommen, ich habe eine Datei mit dem Namen a.txt. Ich füge es dem Staging-Bereich hinzu und ändere es dann. Wie könnte ich es wieder so machen, wie es war, als ich es hinzugefügt habe?

Geo
quelle

Antworten:

77
  • Vor Git 2.23: git checkout a.txt
  • Ab Git 2.23: git restore a.txt

Git sagt dir das, wenn du tippst git status.

Vor Git 2.23:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   a
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   a
#

Ab Git 2.23:

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   a

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   a
Abyx
quelle
3
@Daenyth Ich habe es vor dem Posten überprüft, und Sie können sehen, dass die Ausgabe verschiedene Möglichkeiten zum Zurücksetzen der Dateien in verschiedenen Zuständen (inszeniert vs. nicht inszeniert) zeigt
Abyx
1
@ Daenyth - Sie denken an "Git Checkout Branch-Name-Pfad" oder "Git Checkout HEAD-Pfad"
William Pursell
@ William: Danke! Macht jetzt viel mehr Sinn.
Daenyth
Funktioniert nicht für neue Dateien, daher wird das Staging nicht wirklich ausgecheckt, da ein Objekt erforderlich ist. Wie kann ich von der Inszenierung auschecken? bearbeiten Es hat funktioniert mit --wie Status sagt.
Rudie
30

git checkout -- a.txt

Die andere Antwort auf dieser Seite hat das nicht --und führte zu Verwirrung.

Dies sagt Git Ihnen, wenn Sie Folgendes eingeben git status:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   a
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   a
#
nicht rechteckig
quelle
4
Es war besser, uns den Unterschied zu erklären, als das zu veröffentlichen, was zuvor zitiert wurde.
Bachsau
2

Aufheben der Bereitstellung einer bereitgestellten Datei

In den nächsten beiden Abschnitten wird gezeigt, wie Sie mit dem Staging-Bereich und den Änderungen des Arbeitsverzeichnisses arbeiten. Das Schöne daran ist, dass der Befehl, mit dem Sie den Status dieser beiden Bereiche bestimmen, Sie auch daran erinnert, wie Sie Änderungen an ihnen rückgängig machen können. Angenommen, Sie haben zwei Dateien geändert und möchten sie als zwei separate Änderungen festschreiben. Sie geben jedoch versehentlich git add * ein und stellen beide bereit. Wie kannst du einen der beiden aus der Bühne bringen? Der Befehl git status erinnert Sie an:

$ git add *
$ git status

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> README
modified:   CONTRIBUTING.md

Direkt unter dem Text "Zu übernehmende Änderungen" steht "git reset HEAD ... verwenden", um die Bühne zu verlassen. Verwenden wir diesen Rat, um die Datei CONTRIBUTING.md zu entfernen:

$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M   CONTRIBUTING.md

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> README

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   CONTRIBUTING.md

Der Befehl ist etwas seltsam, funktioniert aber. Die Datei CONTRIBUTING.md wurde geändert, aber erneut nicht bereitgestellt.

Girish Rathi
quelle