Wie Mach ich das rückgängig 'git add' vor dem commit?
Ich irrtümlich hinzugefügten Dateien in git mit dem Befehl:
git add myfile.txt
Habe ich noch nicht ausgeführt git commit
. Gibt es eine Möglichkeit zum rückgängig machen, so dass diese Dateien nicht übertragen?
- Beginnend mit Git v1.8.4, alle Antworten, dass die Verwendung
HEAD
oderhead
können jetzt@
im OrtHEAD
statt. Siehe diese Antwort (letzter Abschnitt) um zu erfahren, warum Sie das tun kann. - Ich machte eine kleine Zusammenfassung, die zeigt, alle Möglichkeiten, um unstage eine Datei: stackoverflow.com/questions/6919121/...
- Warum nicht git checkout?
git checkout
nicht entfernen inszeniert änderungen aus dem commit-index. Es kehrt nur ungespielt änderungen der letzten revision, die übrigens ist nicht das, was ich möchte, ich will die änderungen, ich will nur Sie in einem späteren Begehen.- Wenn Sie Eclipse verwenden, es ist so einfach wie das deaktivieren der Dateien im übertragen-Dialog-box
- Dies ist eine großartige Ressource direkt aus Github: Wie rückgängig machen (fast) alles, was mit Git
- Bevor Sie veröffentlichen eine neue Antwort, sollten es schon 25+ Antworten für diese Frage. Stellen Sie sicher, dass Ihre Antwort trägt, was nicht zu bestehenden Antworten
- Ich wünschte, ich könnte upvote dies jedes mal, wenn ich wieder kommen hier zu beziehen
- git entfernen myfile.txt
- Ich mache immer diese Arbeit durch die Ausführung
git reset <file_name>
. Für weitere Informationen nehmen Sie einen Blick an diesem Artikel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie rückgängig machen
git add
vor dem commit mitdem entfernen es aus dem aktuellen index (der "begangen werden" - Liste), ohne etwas zu ändern sonst.
Können Sie
ohne Dateinamen unstage alle aufgrund von änderungen. Dieses kann in handliches kommen, wenn es zu viele Dateien aufgelistet werden nacheinander in einer angemessenen Höhe der Zeit.
In alten Versionen von Git, die oben genannten Befehle sind äquivalent zu
git reset HEAD <file>
undgit reset HEAD
beziehungsweise, und wird scheitern, wennHEAD
nicht definiert ist (weil Sie es noch nicht gemacht, alle commits in das Repository) oder mehrdeutig (weil Sie erstellt ein Zweig namensHEAD
, das ist eine dumme Sache, die Sie nicht tun sollten). Diese wurde geändert im Git 1.8.2, obwohl, so in den modernen Versionen von Git können Sie die oben genannten Befehle bereits vor Ihrer ersten commit:git add
überschrieb eine Vorherige inszeniert ungebunden-version, können wir nicht wiederherstellen. Ich habe versucht, zu klären, dies in meiner Antwort weiter unten.git reset HEAD *.ext
woext
ist die Dateien mit der angegebenen Erweiterung, die Sie möchten unadd. Für mich war es*.bmp
&*.zip
git rm --cached
) es bedeutet, dass Sie vorbereiten, um einen commit, der gelöscht Datei.git reset HEAD <filename>
auf der anderen Seite, kopieren Sie die Datei vom KOPF auf den index, so dass dem nächsten commit wird nicht angezeigt, irgendwelche änderungen an dieser Datei vorgenommen.git reset -p
wiegit add -p
. Das ist genial!-p
jeden Fall genial, und es ist in einer Menge von git-Befehle (nicht nur zurücksetzen und hinzufügen). Aber zu beantworten @WeDoTDD.com und @Johnny,git reset
von selbst löscht nur den Inhalt, ob Git "kennt" die Veränderungen; es nicht klar, das ändert sich. Zu tun, was Sie tun müssengit checkout someFile.txt
(für einzelne Dateien) odergit reset --hard
(alles abwischen sauber). Es gibt kein zurück von einem dieser Befehle, obwohl, so sehr vorsichtig sein, wenn mit Ihnen.git add
Sie wiederherstellen möchten (61/3AF3...
-> Objekt-id613AF3...
), danngit cat-file -p <object-id>
(es könnte sich lohnen, sich zu erholen einige Stunden Arbeit, aber auch eine Lektion zu Begehen öfter...)git add
ist übergit fsck --unreachable
wird eine Liste aller nicht erreichbaren obj, die Sie dann überprüfen, indemgit show SHA-1_ID
odergit fsck --lost-found
wird >Schreiben baumelnden Gegenstände in.git/lost-found/commit/
oder.git/lost-found/other/
je nach Typ. Siehe auchgit fsck --help
Du willst:
Argumentation:
Als ich neu war auf dieser, zuerst habe ich versucht
(rückgängig machen meine ganze erste add), nur um diese (nicht so) hilfreiche Nachricht:
Es stellt sich heraus, dass dies ist, weil der Oberschiedsrichter (Zweig?) nicht vorhanden, bis nach dem ersten commit. Das heißt, Sie laufen in die gleiche Anfänger-problem, wie mir, wenn Ihr workflow, wie bei mir, war so etwas wie:
git init
git add .
git status
... viel Mist Schriftrollen von ...
=> Verdammt, ich wollte nicht hinzufügen, dass alle.
google "rückgängig" git add"
=> finden Stack-Overflow - yay
git reset .
=> fatal: Fehler beim auflösen von 'KOPF' als gültig ref.
Weiter stellt sich heraus, dass es ein Fehler protokolliert gegen die unhelpfulness dieser in der mailing-Liste.
Ist und dass die richtige Lösung war richtig, es in der Git-status-Ausgang (welcher, ja, ich beschönigt als " crap)
Und die Lösung ist in der Tat zu verwenden
git rm --cached FILE
.Beachten Sie die Warnungen anderswo hier -
git rm
löscht Ihre lokale Arbeitskopie der Datei, aber nicht wenn Sie --cached. Hier das Ergebnisgit help rm
:Ich weiter verwenden
alles entfernen und neu beginnen. Hat nicht funktioniert, obwohl, weil, während
add .
rekursiv ist, stellt sich herausrm
muss-r
rekursiv durchsuchen. Seufz.Okay, jetzt bin ich wieder da, wo ich angefangen habe. Das nächste mal werde ich
-n
machen einen Probelauf und sehen, was Hinzugefügt werden:Ich zog den Reißverschluss alles an einem sicheren Ort, bevor Sie Vertrauen
git help rm
über die--cached
nicht zerstören nichts (und was ist, wenn ich es falsch schrieb).rm -rf .git
,git init
weil ich nicht Vertrauengit rm --cached
um meine arbeiten zu kopieren. Es sagt ein wenig wie git ist immer noch übermäßig Komplex, in einigen Orten.git unstage
sollte nur auf eine Aktie, die standard-Kommando, es ist mir egal, wenn ich kann hinzufügen, es wie ein alias.git rm -r --cached .
funktioniert einwandfreigit reset
, versuchen Siegit reset *
anstelle vongit reset .
- es un-Bühnen alles, was Sie bisher bereitgestellte Dateien.git add -p
git reset HEAD <File>...
git stash/git stash pop
zu vermeiden, packen/sichern allesgit add
Befehl neue Dateien Hinzugefügt, aber nicht änderungen an bestehenden Dateien..git
Verzeichnis und die Initialisierung erneut ist der beste Weg. Für diese Fälle ein gut genutzt repo, wo Sie gerade zufällig fügte hinzu, eine einzige Datei,git rm --cached <file>
wohl das beste ist ich bekomme zwar ein unheimlichdelete mode 100644 file
nach meinem Begehen.git status
Ausgabe von git-version 1.8.1.4 der richtige Weg, um unstage neue Dateien:git reset HEAD <file>...
git reset
rückgängig machen, werden alle hinzugefügten Dateien odergit reset <file>
rückgängig machen einer bestimmten Datei Hinzugefügt.git rm --cached
können auf der Oberfläche zu arbeiten, sondern das, was tatsächlich passiert ist, es entfernt Sie aus der tracking-Historie als auch die ist nicht das, was Sie wollen würden, es sei denn, Sie Hinzugefügt, die Datei in einer gitignore-Datei, wo die Datei sollte nicht erfasst wurden in Erster Linie dann, in diesem Fall wäre es ok.git rm --cached
git rm --cache <filename>
, wenn die Dateien bereits im index, aber wenn Sie nicht wollen, um in diesem verpflichten, verwenden Siegit reset <filename>
Wenn Sie Typ:
git wird Ihnen sagen, was ist inszeniert, etc,, einschließlich der Anleitung, wie unstage:
Find ich git spielt einen ziemlich guten job, stieß mir das richtige zu tun in einer Situation wie dieser.
Hinweis: Aktuelle git-Versionen (1.8.4.x) sich geändert haben diese Nachricht:
add
ed Datei wurde bereits verfolgt wird (dieadd
nur dann gespeichert, eine neue version der cache - hier wird es zeigen Sie Ihre Nachricht). An anderer Stelle, wenn die Datei zuvor nicht inszeniert, es zeigtuse "git rm --cached <file>..." to unstage
git reset HEAD <file>
ist das einzige, das arbeiten im Falle dass Sie wollen unstage eine Datei löschengit reset HEAD
to unstage.Klären:
git add
bewegt sich die änderungen aus dem aktuellen Verzeichnis in das staging-Bereich (index).Dieser Vorgang wird als Inszenierung. Also die meisten natürlichen Befehl Bühne die änderungen (geänderte Dateien), ist die offensichtliche ein:
git add
ist nur ein einfacher Typ-alias fürgit stage
Schade, dass es keine
git unstage
nochgit unadd
Befehle. Das relevante ist, ist schwerer zu erraten oder zu erinnern,aber ist ziemlich offensichtlich:
Können wir leicht erstellen Sie einen alias für diesen:
Und endlich, wir haben neue Befehle:
Persönlich habe ich sogar noch kürzere Aliase:
git stage
ist der alias fürgit add
, die die historische Befehl, sowohl auf Git und anderen SCM. Es wurde Hinzugefügt im Dezember 2008 mit commit 11920d28da in der "Git' s git-repository", wenn ich sagen kann.Ergänzung zu den akzeptierten Antworten, wenn Ihr versehentlich hinzugefügte Datei riesig war, werden Sie wahrscheinlich feststellen, dass Sie auch nach dem entfernen aus dem index mit '
git reset
', scheint es immer noch zu besetzen Raum in der.git
- Verzeichnis. Das ist nichts, um besorgt zu sein, die Datei ist ja immer noch im repository, sondern nur als "lose-Objekt", es wird nicht kopiert und an andere repositories (per clone, push), und der Platz wird irgendwann zurückgefordert wird - wenn auch vielleicht nicht sehr bald. Wenn Sie ängstlich sind, können Sie ausführen:Update (was folgt, ist mein Versuch, klar einige Verwirrung, die entstehen kann, der die meisten Stimmen Antworten):
So, das ist der eigentliche rückgängig von
git add
?git reset HEAD <file>
?oder
git rm --cached <file>
?Streng genommen, und wenn ich mich nicht Irre: keine.
git add
kann nicht rückgängig gemacht werden - sicher, im Allgemeinen.Erinnern wir uns zunächst, was
git add <file>
tatsächlich:Wenn
<file>
war bisher nicht verfolgt,git add
fügt Sie dem cache mit aktuellen Inhalten.Wenn
<file>
war bereits verfolgt,git add
speichert den aktuellen Inhalt (snapshot-version) auf den cache. In GIT, diese Aktion ist immer noch als hinzufügen, (nicht bloße update es), da zwei unterschiedliche Versionen (snapshots) einer Datei sind, gelten als zwei verschiedene Elemente: wir sind daher in der Tat hinzufügen eines neuen Elements zu der cache, der schließlich das Leben später.In diesem Licht, die Frage ist etwas zweideutig:
Den OP ' s Szenario scheint zu sein, das erste (nicht Datei), wir wollen das "rückgängig", um die Datei zu entfernen (nicht nur der aktuelle Inhalt) aus dem überwachten Elementen. Wenn dies der Fall ist, dann ist es ok zu laufen
git rm --cached <file>
.Und wir könnten auch laufen
git reset HEAD <file>
. Dies ist im Allgemeinen vorzuziehen, weil es funktioniert in beiden Szenarien: es macht auch rückgängig machen, wenn wir Unrecht Hinzugefügt eine version von einer bereits verfolgt Element.Aber es gibt zwei Vorbehalte.
Zuerst: Es gibt (wie bereits in der Antwort) nur ein Szenario, in dem
git reset HEAD
funktioniert nicht, abergit rm --cached
tut: ein neues repository (nicht verpflichtet). Aber, wirklich, diese einer praktisch irrelevanten Fall.Zweitens: Werden Sie sich bewusst, dass
git reset HEAD
können nicht auf Magische Weise wiederherstellen, die zuvor zwischengespeicherte Inhalt der Datei, es ist nur resyncs es aus dem KOPF. Wenn unsere fehlgeleitetengit add
überschrieb eine Vorherige inszeniert uncommitted-version, können wir nicht wiederherstellen. Deshalb, streng genommen, können wir nicht rückgängig machen [*].Beispiel:
Natürlich ist dies nicht sehr entscheidend, wenn wir Folgen nur den üblichen faulen workflow zu tun 'git add' nur für das hinzufügen neuer Dateien (Fall 1), und wir aktualisieren und neue Inhalte über die übergabe
git commit -a
Befehl.* (Edit: das oben ist praktisch richtig, aber dennoch kann es einige etwas hackish/gewundene Wege zur Wiederherstellung von änderungen, die inszeniert wurden aber nicht übernommen und dann überschrieben - siehe die Kommentare von Johannes Matokic und iolsmit)
git cat-file
könnte verwendet werden, um erholen Ihre Inhalte.git add
ist übergit fsck --unreachable
wird eine Liste aller nicht erreichbaren obj, die Sie dann überprüfen, indemgit show SHA-1_ID
odergit fsck --lost-found
wird >Schreiben baumelnden Gegenstände in.git/lost-found/commit/
oder.git/lost-found/other/
je nach Typ. Siehe auchgit fsck --help
wird "un-Beurteilung" alles, was Sie Hinzugefügt haben, aus Ihrem aktuellen Verzeichnis rekursiv
git reset HEAD <file>
würde sagenfatal: Failed to resolve 'HEAD' as a valid ref.
Rückgängig eine Datei, die bereits Hinzugefügt ist ganz einfach über git, zum zurücksetzen
myfile.txt
die bereits Hinzugefügt wurde, verwenden Sie:Erklären:
Nachdem Sie inszeniert unerwünschte Datei(en) ungeschehen zu machen, Sie können tun
git reset
,Head
ist Kopf der Datei in der lokalen und der Letzte parameter ist der name der Datei.Erstelle ich die Schritte im Bild und mehr details für Sie, inklusive aller Schritte, die passieren kann in diesen Fällen:
Laufen
und entfernen Sie alle Dateien, die manuell oder durch Auswahl von alle von Ihnen und klicken Sie auf die unstage from commit - Taste.
git-gui
...." 🙂Git-Befehle hat, für jede Aktion, die man sich vorstellen kann, aber braucht umfangreiches wissen, Dinge richtig zu machen und da ist es Kontra-intuitiv am besten...
Was du vor hast:
git add .
odergit add <file>
., Was Sie wollen:
Entfernen Sie die Datei aus dem index, aber halten Sie es versioniert und Links mit nicht festgeschriebenen änderungen in Arbeitskopie:
Reset die Datei auf dem letzten Stand von KOPF -, änderungen rückgängig und entfernen Sie Sie aus dem index:
Dies ist notwendig, da
git reset --hard HEAD
funktioniert nicht mit einzelnen Dateien.Entfernen
<file>
aus index-und Versionsverwaltung, halten die un-versionierte Datei mit änderungen in Arbeitskopie:Entfernen
<file>
aus der Arbeit kopieren und Versionierung komplett:reset head
macht Ihre aktuelle änderungen, aber die Datei ist immer noch überwacht von git.rm --cached
nimmt die Datei aus der Versionsverwaltung, so dass git nicht mehr überprüft Sie auf änderungen (und entfernt auch irgendwann indiziert derzeitigen Veränderungen, sagte zu git von der vorherigenadd
), aber die veränderte Datei immer in Ihrer Arbeitskopie, die Sie in Datei-Ordner auf der HDD.git reset HEAD <file>
ist vorübergehend - der Befehl wird angewendet, um die nächsten commit nur, abergit rm --cached <file>
wird unstage bis es Hinzugefügt wird, wieder mitgit add <file>
. Auchgit rm --cached <file>
bedeutet, wenn Sie drängen, dass die Filiale auf der Fernbedienung, jemand zieht die Branche wird die Datei TATSÄCHLICH gelöscht-Ordner.Die Frage ist nicht eindeutig gestellt. Der Grund dafür ist, dass
git add
hat zwei Bedeutungen:git rm --cached file
.git reset HEAD file
.wenn Sie Zweifel haben, verwenden Sie
Weil es die erwartet, was in beiden Fällen.
Warnung: wenn Sie
git rm --cached file
auf eine Datei, die war geändert (eine Datei existiert, bevor Sie in das repository), dann wird die Datei entfernt aufgit commit
! Es existiert noch, in Ihrem Dateisystem, aber wenn jemand anderes zieht Ihr verpflichten, wird die Datei gelöscht, von Ihrer Arbeit Baum.git status
wird Ihnen sagen, wenn die Datei war ein neue Datei oder geändert:git rm --cached somefile
. Ich hoffe, diese Antwort macht seinen Weg bis die Seite zu einer prominenten position, wo es kann zum Schutz der Neulinge vor irreführungen durch die falschen Ansprüche.Wenn Sie auf Ihre ersten Begehen und Sie nicht verwenden können
git reset
, nur deklarieren "Git Konkurs" und löschen Sie die.git
Ordner und starten Sie übergit add -A && git rm --cached EXCLUDEFILE && git commit -m 'awesome commit'
(Dies funktioniert auch, wenn es keine Vorherige verpflichtet, reFailed to resolve 'HEAD'
problem)Als pro viele der anderen Antworten, die Sie verwenden können
git reset
ABER:
Ich fand das sehr wenig post, die tatsächlich fügt sich das Git-Befehl (auch alias) für
git unadd
: siehe git unadd für details oder..Einfach,
Nun können Sie
git remove
odergit rm
kann dafür verwendet werden, mit der--cached
Flagge. Versuchen:git rm --cached ...
entfernen von Dateien aus einem git repo. Sie werden immer noch auf Ihrem computer vorhanden sind, aber das ist SEHR Verschieden von unstaging änderungen in eine Datei. Für alle stolpern auf diesem, ist es nicht eine gültige Antwort auf die Frage.Verwenden
git add -i
zu entfernen, nur hinzugefügte Dateien von Ihrem kommenden Begehen. Beispiel:Hinzufügen der Datei, die Sie nicht wollen:
Gehen in das interaktive hinzufügen machen Sie die add (die Befehle eingegeben git hier ein "r" (rückgängig), "1" (erste Eintrag in der Liste rückgängig zeigt), 'return', um die drop-out-of-revert-Modus, und "q" (quit):
Das ist es! Hier ist dein Beweis, der zeigt, dass "foo" ist zurück auf der nicht-Liste:
Hier ist ein Weg, um dies zu vermeiden leidige problem, wenn Sie ein neues Projekt beginnen:
git init
.Git macht es wirklich schwer zu tun
git reset
wenn Sie haben noch keine verpflichtet. Wenn Sie erstellen eine winzige erste Begehen, nur um einen zu haben, danach kann mangit add -A
undgit reset
so oft wie Sie möchten, um zu bekommen, alles richtig.Ein weiterer Vorteil dieser Methode ist, dass, wenn Sie in der Zeile endenden Mühen später und aktualisieren müssen, alle Ihre Dateien, ist es ganz einfach:
autocrlf
Wert... Das funktioniert nicht in jedem Projekt abhängig von den Einstellungen.git reset somefile
undgit reset
beide arbeiten vor dem ersten commit, jetzt. Dies war der Fall, da mehrere Git-releases zurück.Vielleicht Git geändert hat, seit Sie Ihre Frage veröffentlicht.
Nun, können Sie versuchen:
Dies sollte sein, was du suchst.
Beachten Sie, dass wenn Sie nicht auf eine Version festlegen, dann müssen Sie fügen Sie ein separator. Beispiel aus meiner Konsole:
(git-version 1.7.5.4)
git reset <path>
und es funktioniert Prima ohne Trennzeichen. Ich bin auch mit git 1.9.0. Vielleicht ist es funktioniert nicht in älteren Versionen?Zu löschen, neue Dateien aus der staging-area (und nur im Falle einer neuen Datei), wie oben vorgeschlagen:
Verwenden Sie rm --cached nur für neue Dateien, die versehentlich Hinzugefügt.
--cached
ist eine wirklich wichtige Teil hier.Zurücksetzen, um jede Datei in einem bestimmten Ordner (und seinen Unterordnern), können Sie folgenden Befehl verwenden:
git status
zu sehen, nichts, die bleibt, und setzen Sie es manuell, d.h.git reset file
.verwenden Sie die
*
Befehl, um mehrere Dateien auf einmaletc
.*
oder.*.prj
Geben Sie einfach
git reset
es zurück und es ist, wie Sie noch nie getipptgit add .
seit dem letzten commit. Stellen Sie sicher, dass Sie begangen haben, vor.Angenommen, ich erstelle eine neue Datei
newFile.txt
.Glaube, ich fügen Sie die Datei versehentlich,
git add newFile.txt
Nun möchte ich das rückgängig hinzufügen, bevor Sie zu Begehen,
git reset newFile.txt
Für eine bestimmte Datei:
Für alle hinzugefügten Dateien:
Hinweis: Kasse ändert sich der code in den Dateien und bewegt sich auf die Letzte Aktualisierung (begangen) Zustand. reset nicht ändern, dass die codes; es setzt die header.
git reset <file>
undgit checkout <file>
.Dieser Befehl wird unstash Ihre änderungen:
Können Sie auch
Teile hinzufügen von Dateien.
Ich bin überrascht, dass niemand erwähnt interaktiven Modus:
wählen Sie option 3, um un-Dateien hinzufügen. In meinem Fall habe ich oft wollen Sie mehr als eine Datei mit dem interaktiven Modus können Sie zahlen wie diese, um Dateien hinzuzufügen. Diese wird nehmen, alle, aber 4: 1,2,3,5
Wählen Sie eine Sequenz geben Sie einfach 1-5, alle von 1 bis 5.
Git staging von Dateien
Rückgängig machen git add verwenden
git reset filename
Entfernen, eine Datei mit dem Namen filename.txt aus dem aktuellen index, den "begangen werden" - Bereich, ohne etwas zu ändern sonst.
git add myfile.txt
# dies wird Ihre Datei in die begangen werden ListeZiemlich das Gegenteil dieses Befehls ist,
also, werden Sie in vorherigen Zustand. angegeben wird werden wieder nicht in Liste (vorherigen Zustand).
wird es zurückgesetzt, den Kopf mit, dass die angegebene Datei. so, wenn Sie Ihren Kopf nicht haben, das bedeutet, es wird einfach reset es
In SourceTree Sie können dies ganz einfach über das gui.
Sie können überprüfen, welcher Befehl sourcetree verwendet, um unstage eine Datei.
Ich eine Datei neu angelegt und fügte hinzu, es zu git. Dann habe ich unstaged es mit dem SourceTree gui.
Dies ist das Ergebnis:
SourceTree verwendet
reset
to unstage neue Dateien.Eines der intuitivsten Lösungen ist mit SourceTree.
Können Sie einfach per drag-and-drop von Dateien aus staged und unstaged
Den
git reset
Befehl hilft Ihnen, modifiziert entweder den staging-Bereich oder den staging-Bereich und arbeiten Baum. Git ' s Fähigkeit, Handwerk begeht, genau wie Sie wollen, bedeutet, dass Sie manchmal brauchen, um änderungen rückgängig machen die änderungen, die Sie inszeniert mit git add.Können Sie tun, indem Sie
git reset HEAD <file to change>
. Sie haben zwei Möglichkeiten, um loszuwerden, ändert sich komplett.git checkout HEAD <file(s) or path(s)>
ist ein schneller Weg, um änderungen rückgängig zu machen, um Ihren staging-Bereich und arbeiten Baum. Seien Sie vorsichtig mit diesem Befehl, jedoch, weil es entfernt alle änderungen, um Ihre arbeiten Baum. Git weiß nicht, über diese änderungen, da Sie nie begangen wurden. Es gibt keinen Weg, um diese änderungen zurück, sobald Sie diesen Befehl ausführen.Anderen Befehl zu Ihrer Verfügung ist
git reset --hard
. Es ist genauso destruktiv zu Ihrem Arbeits-Baum-alle nicht festgeschriebenen änderungen oder inszeniert änderungen gehen verloren, nachdem es läuft. Läuftgit reset -hard HEAD
macht das gleiche wiegit checkout HEAD
. Es ist einfach nicht erforderlich, eine Datei oder einen Pfad zu arbeiten.Können Sie
--soft
mitgit reset
. Es setzt dem repository, commit, den Sie angeben und Stufen alle diese Veränderungen. Alle änderungen, die Sie bereits inszeniert sind nicht betroffen, noch sind die änderungen im working tree.Schließlich können Sie mit
--mixed
zum zurücksetzen der arbeiten Baum ohne Inszenierung keine änderungen. Dies auch unstages alle änderungen, die inszeniert sind.Löschen Sie einfach die
./git
Ordner und starten Sie von Anfang an../.git
Ordner"? Das ist mehr als ein bisschen dramatisch — das ist nicht zu diskutieren "rückgängig machengit add
vor dem ersten commit", aber änderungen rückgängig gemacht, nachdem Sie einige nützliche Arbeit geleistet worden.Wird erace der Inszenierung.
Den Befehl
git reset --hard HEAD
funktionieren sollte. Die eine Sache zu beachten ist, dass Sie brauchen, um geändert directory (cd
) wieder in Ihre normale Arbeitsverzeichnis. Ansonsten, wenn Sie den Befehl ausführen aus dem Verzeichnis, das Sie versehentlich Tat diegit add .
.... Sie werden nicht in der Lage, um wieder heraus-und stattdessen bekommen die Fehler erwähnt in anderen posts bezüglich "unknown revision oder der Pfad nicht in der Arbeitsgruppe Baum".