Saya mencoba menghapus 2 commit terakhir dari salah satu repositori GitHub saya. Saya sudah mencoba seperti yang disarankan di sini : git push -f origin HEAD^^:master
. Tampaknya berfungsi, karena dua komit terakhir dihapus.
Kemudian saya menghapusnya dari repositori lokal saya dengan git rebase -i HEAD~2
. Saya menghapus baris yang terkait dengan komit tersebut, dan memeriksa git log
apakah mereka dihapus dengan benar.
Setelah itu, saya membuat beberapa perubahan di repositori lokal saya, membuat komit baru, dan mendorong ke GitHub. Masalahnya adalah, di akun GitHub saya, saya memiliki dua commit sebelumnya yang saya coba hapus.
Saya pikir masalahnya ada di repositori lokal saya, karena jika saya mengkloning repositori Github saya ke lokal saya dan membuat beberapa perubahan di sini, ketika saya mendorong komit baru, komitmen lama itu tidak didorong ke GitHub.
Ada ide?
git reset --hard HEAD^4
ataugit reset --hard HEAD~4
. Padahal, hal-hal mungkin akan sedikit rumit jika sejarah Anda mengandung gabungan. Anda dapat menemukan informasi lebih lanjut tentang menentukan revisi di bagian terkait di sini .git reset --hard HEAD~7
, tapi tolong perbaiki saya jika saya salah.Jika Anda ingin menghapus 2 (dua) commit terakhir, ada perintah mudah untuk melakukannya:
Anda dapat mengubah
2
jumlah komit terakhir yang ingin Anda hapus.Dan untuk mendorong perubahan ini ke jarak jauh, Anda perlu melakukan
git push
dengan parameter force (-f
):Namun, saya tidak merekomendasikan untuk melakukan
git
perintah dengan-f
atau--hard
opsi yang terlibat jika ada komit baru di remote (Github) setelah ini berkomitmen yang ingin Anda hapus. Dalam hal ini, selalu gunakangit revert
.sumber
hard
perintah, Anda kehilangan dua komitmen ini. Jika Anda ingin menyimpan perubahan, buatdiff
file komit ini sebelum menerapkan reset.git reset HEAD~5
(jangan gunakanhard
). Dengan cara ini Anda akan mendapatkan perubahan dalam status bertahap (mis. Tidak berkomitmen). Bagi saya lihat jawaban ini .Berikut ini berfungsi untuk saya
Ini menghapus
n
komit terakhir dari repo lokal, karenaHEAD^
hanya menghapus satu. Jika Anda perlu menghapus perubahan ini dari jarak jauh, Anda mungkin perlu memaksakan push karena Anda akan berada di belakang remote.sumber