SORU
10 EYLÜL 2009, PERŞEMBE


GİT kullanarak, ne kadar seçici / başka değişiklikler birleştirme çekme'In 'çatal alabilir miyim'?

Bu senaryo:

  1. 'Çatal' github.com ve benim rutin iş başlatmak bir kod temeli: Düzen - Taahhüt - İtme; hack hack hack aka. ben karar veririm
  2. Bazı değişiklikler yaptıktan sonra, başka bir kişi aynı proje üzerinde yapılan bazı değişiklikler görüyorum ve onları seviyorum!
  3. Benim birleştirmek istiyorum ben karar veririm. Sorun, sadece bir kısmı belirli bir taahhüt, birkaç dışarı yaptı tamamlar. istiyorum.

Değişiklikler, benim birleşti bu seçin miktarda almanın en etkili yöntem ne olabilir? diye çatal

CEVAP
10 EYLÜL 2009, PERŞEMBE


IRC dünyanın dalgaların peşinde sonra, birisi mükemmel bir çözüm verdi:

git cherry-pick SHA1 --no-commit
git add --patch

Umarım aynı soruyu soran başka kimse var yardımcı olur!

EDİT: TAMAM, belki bu o kadar basit değil. İşte tam adımları:

  1. İlk depo için gerekli cd-ıng çalışma dizini için var.

  2. Sen şimdi uzak şube Ekle, getir o zaman. Bunu yapın:

    git remote add someUser git://github.com/someUser/someRepo.git

    git fetch someUser

  3. Şimdi git log someUser/master gibi komutlar içinde birleştirmek istediğiniz SHA1 taahhüt bulmak için çalıştırabilirsiniz 'kısmen'.

  4. SHA sonra, şimdi çalıştırabilirsiniz:

    git cherry-pick -n SHA1

    nerede 7* *SHA, duh taahhüt!

  5. Büyük olasılıkla çatışmalar, taahhüt ve proje, belirli bir alanda değişiklikleri nasıl bağlı olacak. Üzgünüm, ama el ile güvenilir editörü ile bu sorunu çözün. Değişiklikleri gibi sahne almak kadar kullanmak ne olursa olsun VİM veya çekin ve çatışmalar uzakta kesmek.

  6. Sen şimdi KAFA revizyon dizini sıfırlamak için, daha sonra add --patch komut GIT güvenilir pick kullanmak istediğinizi seçebilirsiniz:

    git reset HEAD

    git add --patch git add -p

  7. Yay! Tamamlama süresi:

    git commit -m "I merged a select amount of changes"

  8. Karışıklık (git add --patch söylediğin şeyler) temizlemek ve sadece çalışma depoyu seçili değişiklikleri saklamak için:

    git reset --hard HEAD

    Görünüşe göre git checkout -f başka bir seçenek de.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • michal lelkowski

    michal lelko

    9 Temmuz 2006