Ini sejarah saya untuk folder 'somefolder'
$ git log somefolder
commit 89cd
More changes to somefolder
commit ef47a
Updating somefolder and other stuff
commit e095
Bugs fixed in somefolder
Saya ingin mengembalikan beberapa folder kembali ke 'Bug diperbaiki di beberapa folder "komit.
Karena komit kedua melibatkan perubahan di luar folder tertentu, saya tidak ingin mengembalikan komit ini.
Saya kira cara teraman adalah membuat diff / patch antara commit e095 dan 89cd yang berlaku hanya untuk beberapa folder, dan kemudian menerapkan patch itu. Bagaimana saya bisa melakukan itu?
git reset e095 -- some/folder
sebagai gantinya gunakan--no-overlay
forgit checkout
sehingga file terlacak yang tidak ada dalam komit yang Anda periksa akan dihapus.Anda dapat menggunakan
git reset
untuk mengatur ulang indeks yang juga akan termasuk menghapus file yang ditambahkan dalam komit yang lebih baru (git checkout
itu sendiri tidak melakukan ini):Namun
git reset
tidak memperbarui copy pekerjaan dan--hard
opsi tidak berfungsi dengan folder. Jadi gunakangit checkout
untuk membuat copy pekerjaan sama dengan indeks:dan kemudian jika Anda juga ingin menghapus file apa pun yang ditambahkan, Anda juga perlu melakukan:
sumber