11450 Stimmen

Wie kann ich "git add" vor der Übertragung rückgängig machen?

Ich habe versehentlich Dateien mit dem Befehl zu Git hinzugefügt:

git add myfile.txt

Ich habe noch nicht ausgeführt git commit . Gibt es eine Möglichkeit, dies rückgängig zu machen, so dass diese Dateien nicht in die Übertragung aufgenommen werden?

57 Stimmen

Beginnend mit Git v1.8.4 werden alle folgenden Antworten, die HEAD o head können nun @ anstelle von HEAD stattdessen. Siehe diese Antwort (letzter Abschnitt) um zu erfahren, warum Sie das tun können.

5 Stimmen

Ich habe eine kleine Übersicht erstellt, die alle Möglichkeiten zum Aufheben einer Datei zeigt: stackoverflow.com/questions/6919121/

8 Stimmen

Wenn Sie Eclipse verwenden, ist es so einfach wie das Entfernen der Markierung der Dateien im Dialogfeld "Übertragen".

30voto

boulder_ruby Punkte 35164

Verwenden Sie die * Befehl, um mehrere Dateien gleichzeitig zu bearbeiten:

git reset HEAD *.prj
git reset HEAD *.bmp
git reset HEAD *gdb*

usw.

4 Stimmen

Beachten Sie, dass * normalerweise keine Punktdateien oder 'Punktverzeichnisse' einschließt, es sei denn, Sie geben explizit .* o .*.prj

0 Stimmen

* ist kein Befehl. Es ist ein Platzhalter.

29voto

Donovan Punkte 313

Tippen Sie einfach git reset kehrt es zurück und es ist, als hätten Sie nie etwas eingegeben. git add . seit Ihrer letzten Übertragung. Vergewissern Sie sich, dass Sie zuvor eine Übertragung durchgeführt haben.

0 Stimmen

Zufälligerweise gab es einen letzten Commit... aber ich habe speziell nach dem Entfernen einer einzelnen Datei aus dem Commit gefragt, nicht nach jeder Datei aus dem Commit.

0 Stimmen

Was bietet diese Antwort zusätzlich zur ersten Antwort?

28voto

Vidura Mudalige Punkte 800

Angenommen, ich erstelle eine neue Datei, newFile.txt :

Enter image description here

Angenommen, ich füge die Datei versehentlich hinzu, git add newFile.txt :

Enter image description here

Jetzt möchte ich diese Hinzufügung rückgängig machen, bevor ich sie festlege, git reset newFile.txt :

Enter image description here

0 Stimmen

Nehmen wir an, ich bin beim 1. Bild, d.h. ich habe nicht einmal "git.add" gemacht. Außerdem will ich überhaupt nicht alle diese Änderung. Ich meine, wenn ich den Git-Status aufrufe, sollte er keine roten Dateien anzeigen. Ich meine, es sollte synchron sein, als ob es keine einzige Datei seit dem letzten Git-Push geändert. wie das zu erreichen.

0 Stimmen

SO nehmen Sie an, dass Sie gerade den ersten Schritt gemacht haben. Und Sie möchten alle Änderungen, die Sie vorgenommen haben und die dazu führen, dass "newFile.txt" rot angezeigt wird, wieder loswerden.

0 Stimmen

Wenn ich git status ausführe. sollte ich überhaupt keine Änderung sehen. Alle roten Dateien sollten rückgängig gemacht werden.

25voto

Für eine bestimmte Datei:

  • git reset meine_datei.txt
  • git checkout meine_datei.txt

Für alle hinzugefügten Dateien:

  • git reset .
  • git checkout .

Nota: Zur Kasse ändert den Code in den Dateien und wechselt in den zuletzt aktualisierten Zustand (committed). zurücksetzen ändert nicht die Codes, sondern setzt nur die Kopfzeile zurück.

4 Stimmen

Bitte erklären Sie den Unterschied zwischen git reset <file> y git checkout <file> .

1 Stimmen

Reset ändert die Datei nicht, sondern entfernt sie nur von der Bühne (=index, wo sie mit git add abgelegt wurde)

0 Stimmen

Checkout ändert die Codes in der Datei und wechselt in den zuletzt aktualisierten Zustand. reset ändert die Codes nicht, sondern setzt nur die Kopfzeile zurück. Als Beispiel wird reset für hinzugefügte oder übergebene Dateien verwendet, die vor dem Push zurückgesetzt werden, und checkout für die Rückkehr zum letzten aktualisierten/übergebenen Stadium vor Git Add.

22voto

git add myfile.txt # Damit wird die Datei in die Liste der zu übertragenden Dateien aufgenommen.

Das genaue Gegenteil dieses Befehls ist,

git reset HEAD myfile.txt  # This will undo it.

so werden Sie in den vorherigen Zustand versetzt. Angegeben wird wieder in untracked Liste (vorherigen Zustand) sein.

Es setzt Ihren Kopf mit der angegebenen Datei zurück. Wenn Ihr Kopf sie also nicht hat, wird sie einfach zurückgesetzt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X