Poster asli menyatakan:
Jawaban terbaik yang bisa diberikan seseorang kepada saya adalah menggunakan git revert
X kali sampai saya mencapai komit yang diinginkan.
Jadi katakanlah saya ingin kembali ke komit yang berumur 20 komit, saya harus menjalankannya 20 kali.
Adakah cara yang lebih mudah untuk melakukan ini?
Saya tidak dapat menggunakan reset karena repo ini bersifat publik.
Tidak perlu menggunakan git revert
X kali. git revert
dapat menerima rentang komit sebagai argumen, jadi Anda hanya perlu menggunakannya sekali untuk mengembalikan rentang komit. Misalnya, jika Anda ingin mengembalikan 20 komit terakhir:
git revert --no-edit HEAD~20..
Rentang komit HEAD~20..
adalah kependekan dari HEAD~20..HEAD
, dan berarti "mulai dari induk ke- 20 dari komit HEAD, dan kembalikan semua komit setelah hingga HEAD".
Itu akan mengembalikan 20 komit terakhir, dengan asumsi bahwa tidak ada dari mereka yang menggabungkan komit. Jika ada gabungan komit, maka Anda tidak bisa mengembalikan semuanya dalam satu perintah, Anda harus mengembalikannya secara individual
git revert -m 1 <merge-commit>
Perhatikan juga bahwa saya telah menguji menggunakan rentang dengan git revert
menggunakan git versi 1.9.0. Jika Anda menggunakan versi git yang lebih lama, menggunakan rentang dengan git revert
mungkin atau mungkin tidak berfungsi.
Dalam hal ini, git revert
lebih disukai daripada git checkout
.
Perhatikan bahwa tidak seperti jawaban ini yang mengatakan untuk digunakangit checkout
, git revert
sebenarnya akan menghapus file apa pun yang ditambahkan di salah satu komit yang Anda kembalikan, yang menjadikan ini cara yang benar untuk mengembalikan serangkaian revisi.
Dokumentasi