2010-03-12 12 views
30

Sadece çok eski bir dalı masterımda küçük bir değişiklik yaparak yeniden denemeye çalıştım. İlgili üç dosyadan yalnızca birini birleştirmekle ilgili bir sorun oluştu, bu nedenle, yalnızca bu dosyayı atlayacağını düşünerek bir düşünmeden - atlama yaptım, ancak olduğu gibi, tüm değişikliklerimi atlayıp ileriye doğru yuvarlanmış görünüyor. . Şimdi isyan tamamlandı ve benim değişimlerim ortadan kalkmış gibi görünüyor.Yeniden düzenleme sırasında yanlışlıkla atlamadan kurtarma

undoing rebase ile ilgili soruyu gördüm, ama hepsi benim için Yunanca, reflog'u görüyorum, ama dalıma nasıl ekleneceğini bilmiyorum.

Her durumda, rebase'i gerçekten geri almam gerekmiyor, yalnızca iki dosyadaki değişiklikleri geri almak istiyorum. Bunu düzgün bir şekilde yapmak için zaten var mı (bunu başaramadım, sadece dünümün deposunun yedeğini geri yüklemem ve parçaları elden çıkarmam gerekecek).

cevap

35

Önce, çalışma klasörünüzün bir tarpasını yapın. Bu, birkaç kez denemeyi kolaylaştırır.

şu başka eski şube
  • git sen şimdi bu noktada master (Atladığınız)
  • bazı sorunlar
  • rebase

    • git ödeme oldu varsayalım hala başka bir eski dalda ve refloglarınız size gösterir:

      6f8348f [email protected]{0}: rebase: <commit message of last commit in another-old-branch> 
      e547ec0 [email protected]{1}: checkout: moving from another-old-branch to e547ec0d2a558d189464fc57192066b34ec5f28f^0 
      65cedf8 [email protected]{2}: checkout: moving from master to another-old-branch 
      

      Dalların symlinks (ya da işaretçiler) gibi olduklarını düşünün, tek yapmamız gereken, dalın “eski bir şube” noktasının eski taahhütte bulunmasına izin vermektir. eski taahhüt hala orada ve geri dönüşünüze dokunmadı. tür: e547ec0d2a558d189464fc57192066b34ec5f28f oldu burada Bizim durumumuzda

      'hey git, başka eski şube e547ec0d2 oldu, her şeyi unutmak', bu yüzden şimdi ne yapmamız gerektiğini

      • git ödeme another- olduğunu zaten orada
      • Git olmayan yere dal normale döndü şimdi --hard e547ec0d2a558d189464fc57192066b34ec5f28f

      reset eğer eski şube #. Ve rebase'ınızı tekrar deneyebilirsiniz.

      Lütfen reflogunuzun artık biraz daha karmaşık olduğundan daha karmaşık olduğunu unutmayın. ama o orada bir yerde lbe gerekir ...

      iyi şanslar!

    +1

    Hayır, iyileşmeye çalışırken başka bir şeyleri batırmış olmalıyım. Cevap bir dahaki sefere işaretlendi ... – Benjol

    +8

    +1; Başka bir ipucu: 'git log -g', reflog’a göz atmanın daha güzel bir yolu olabilir. –

    +2

    Bir çekicilik gibi çalıştım! Sadece benim sabah kurtardı teşekkürler – kmanzana

    İlgili konular