Hier ist mein Verlauf für den Ordner 'somefolder'
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
Ich möchte einen Ordner wieder auf das Commit "Fehler in einem Ordner behoben" zurücksetzen.
Da das zweite Festschreiben Änderungen außerhalb eines Ordners beinhaltete, möchte ich dieses Festschreiben nicht zurücksetzen.
Ich denke, der sicherste Weg wäre, ein Diff / Patch zwischen Commit e095 und 89cd zu erstellen, das nur für einen Ordner gilt, und dann diesen Patch anzuwenden. Wie kann ich das machen?
git reset e095 -- some/folder
stattdessen--no-overlay
fürgit checkout
so dass nachverfolgt Dateien , die nicht in begehen aus Sie auschecken werden entfernt.Sie können
git reset
den Index zurücksetzen, der auch das Entfernen von Dateien umfasst, die in neueren Commits hinzugefügt wurden (git checkout
dies allein tut dies nicht):Die
git reset
Arbeitskopie wird jedoch nicht aktualisiert, und die--hard
Option funktioniert nicht mit Ordnern. Verwenden Sie danngit checkout
, um die Arbeitskopie mit dem Index identisch zu machen:und wenn Sie dann auch alle hinzugefügten Dateien entfernen möchten, müssen Sie auch Folgendes tun:
quelle