Lihatlah grafik komit Anda (dengan gitk atau program serupa). Anda akan melihat komit dari permintaan tarik, dan Anda akan melihat komit Anda sendiri, dan komit gabungan (jika itu bukan gabungan fast-forward). Anda hanya perlu menemukan komit terakhir sebelum penggabungan, dan setel ulang cabang ke komit ini.
(Jika Anda memiliki reflog cabang, akan lebih mudah untuk menemukan komit sebelum penggabungan.)
(Edit setelah informasi lebih lanjut dalam komentar :)
Oke, mari kita lihat grafik:
Saya menganggap komit terakhir (paling kanan) adalah penggabungan salah Anda dengan permintaan tarik , yang menggabungkan garis biru yang terlihat di sini. Komitmen baik terakhir Anda adalah yang sebelumnya di garis hitam, di sini ditandai dengan merah:
Setel ulang ke komit ini, dan Anda akan baik-baik saja.
Ini berarti, dalam copy pekerjaan lokal Anda, lakukan ini (setelah memastikan Anda tidak memiliki hal-hal yang tidak dikomit lagi, misalnya dengan simpanan git):
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
Sekarang konfirmasikan bahwa Anda benar-benar di komit yang saya tandai di sana, dan Anda tidak akan melihat satu pun dari barang yang ditarik dalam leluhurnya.
git push -f origin master
(jika remote github Anda dinamai origin
- lain ubah nama).
Sekarang semuanya akan terlihat benar di github juga. Komit masih akan berada di repositori Anda, tetapi tidak dapat dijangkau oleh cabang mana pun, sehingga tidak akan membahayakan di sana. (Dan mereka akan tetap di repositori RogerPaladin, tentu saja.)
(Mungkin ada satu-satunya cara khusus web Github untuk melakukan hal yang sama, tapi saya tidak terlalu akrab dengan Github dan sistem pengelolaan permintaan tariknya.)
Perhatikan bahwa jika ada orang lain yang mungkin telah menarik tuan Anda dengan komit yang salah, mereka kemudian memiliki masalah yang sama seperti Anda saat ini, dan tidak dapat benar-benar berkontribusi kembali. sebelum mengatur ulang ke versi master baru Anda.
Jika kemungkinan ini terjadi, atau Anda hanya ingin menghindari masalah, gunakan git revert
perintah alih-alih git reset
, untuk mengembalikan perubahan dengan komit baru, alih-alih mengembalikan ke yang lebih lama. (Beberapa orang berpikir Anda tidak boleh melakukan reset dengan cabang yang diterbitkan.) Lihat jawaban lain untuk pertanyaan ini tentang bagaimana melakukan ini.
Demi masa depan:
Jika Anda ingin hanya beberapa komit dari cabang RogerPaladin ini, pertimbangkan untuk menggunakan cherry-pick
bukan merge
. Atau berkomunikasi dengan RogerPaladin untuk memindahkan mereka ke cabang terpisah dan mengirim permintaan tarik baru.