384 Stimmen

Wie kann ich meine Dateien nach einer lokalen Übergabe wieder freigeben?

Ich habe den folgenden Befehl ausgeführt

git add <foo.java>
git commit -m "add the foo.java file"

Wie kann ich mein lokales Commit jetzt löschen und foo.java aus der Versenkung holen?

Wenn ich tippe git reset --hard habe ich festgestellt, dass es meine geänderten foo.java zum Original.

639voto

Antti Punkte 11524

git reset --soft HEAD~1 sollte das tun, was Sie wollen. Danach werden Sie die ersten Änderungen im Index haben (sichtbar mit git diff --cached ), und Ihre neuesten Änderungen nicht inszeniert. git status sieht dann wie folgt aus:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   foo.java
#
# 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:   foo.java
#

Sie können dann git add foo.java und übertragen Sie beide Änderungen auf einmal.

130voto

Ryan Stewart Punkte 120600

Verwendung:

git reset HEAD^

Das führt standardmäßig einen "gemischten" Reset durch, der das tut, was Sie wollten: foo.java in unstaged einfügen und den letzten Commit entfernen.

88voto

Andrey Deineko Punkte 50112

Meiner Meinung nach ist die folgende Vorgehensweise besser lesbar (und daher vorzuziehen):

git reset HEAD~1

Anstelle von 1 kann es eine beliebige Anzahl von Commits geben, die Sie aufheben wollen.

42voto

wRAR Punkte 24128

git reset --soft ist genau dafür da: Es ist wie git reset --hard , berührt aber die Dateien nicht.

21voto

Lavika Punkte 451

Um alle Dateien der letzten Übertragung zu entsorgen -

git reset HEAD~

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