İşlem grafiğinize bakın (gitk veya benzeri bir programla). Çekme talebinden taahhütleri göreceksiniz ve kendi taahhütlerinizi ve bir birleştirme taahhüdünü göreceksiniz (hızlı ileri bir birleştirme değilse). Birleştirme işleminden önce kendi taahhütlerinizin sonunu bulmanız ve şubeyi bu taahhüde sıfırlamanız yeterlidir.
(Şube reflogunuz varsa, birleştirmeden önce taahhüdü bulmak daha da kolay olmalıdır.)
(Yorumlarda daha fazla bilgi aldıktan sonra düzenleyin :)
Tamam, grafiğe bakalım:
Son (en sağdaki) taahhüdün, burada görülen mavi çizgiyi birleştiren çekme talebi ile yanlış birleştirmeniz olduğunu varsayıyorum . Son iyi taahhüdünüz, daha önce siyah çizgide, burada kırmızı ile işaretlenmiş olacak:
Bu taahhüdü sıfırlayın ve iyi olmalısınız.
Bu, yerel çalışma kopyanızda bunu yapın (artık gitmeyen şeyler olmadığından emin olduktan sonra, örneğin git stash tarafından):
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
Şimdi gerçekten orada işaretlediğim taahhütte olduğunuzu onaylayın ve atalarında hiçbir şey görmeyeceksiniz.
git push -f origin master
(github uzaktan kumandanız adlandırılmışsa origin
- adı değiştirin).
Şimdi her şey github'da da doğru görünmeli. Taahhütler yine de deponuzda olacak, ancak herhangi bir şube tarafından ulaşılamayacak, bu nedenle orada herhangi bir zarar vermemelidir. (Ve elbette hala RogerPaladin'in deposunda olacaklar.)
(Aynı şeyi yapmanın yalnızca Github'a özgü bir web yolu olabilir, ancak Github'a ve onun çekme isteği yönetim sistemine aşina değilim.)
Not başkası zaten yanlış ile ana taahhüt çekti olabilecek, onlar şu anda olduğu gibi daha sonra aynı sorun var ve gerçekten geri katkıda edemez. yeni ana sürümünüzü sıfırlamadan önce.
Bunun olması muhtemelse veya sadece herhangi bir sorundan kaçınmak istiyorsanız , değişiklikleri eski bir işe geri döndürmek yerine yeni bir işlemle geri almak için git revert
komutu kullanın git reset
. (Bazı insanlar asla yayınlanan şubelerle sıfırlama yapmamanız gerektiğini düşünür.) Bunun nasıl yapılacağı ile ilgili bu soruya verilen diğer yanıtlara bakın.
Gelecek için:
RogerPaladin'in şubesinin sadece bazı taahhütlerini istiyorsanız, cherry-pick
yerine kullanmayı düşünün merge
. Ya da ayrı bir şubeye taşımak ve yeni bir çekme isteği göndermek için RogerPaladin ile iletişim kurun.