Oto moja historia dla folderu „somefolder”
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
Chcę przywrócić jakiś folder z powrotem do zatwierdzenia „Błędy naprawione w jakimś folderze”.
Ponieważ drugie zatwierdzenie obejmowało zmiany poza jakimś folderem, nie chcę cofać tego zatwierdzenia.
Myślę, że najbezpieczniejszym sposobem byłoby utworzenie różnicy / poprawki między zatwierdzeniem e095 a 89cd, która dotyczy tylko jakiegoś folderu, a następnie zastosowanie tej poprawki. Jak mogę to zrobić?
git reset e095 -- some/folder
zamiast tego użyj--no-overlay
forgit checkout
, aby śledzone pliki, które nie są w zatwierdzeniu, z których wypisujesz, zostaną usunięte.Możesz użyć
git reset
do zresetowania indeksu, który obejmie również usunięcie plików, które zostały dodane w nowszych zatwierdzeniach (git checkout
samodzielnie tego nie robi):Jednak
git reset
nie aktualizuje kopii roboczej, a--hard
opcja nie działa z folderami. Następnie użyj,git checkout
aby kopia robocza była taka sama jak indeks:a jeśli chcesz usunąć wszystkie dodane pliki, musisz również zrobić:
źródło