2016-04-07 11 views
2

Her bilet için yeni şubeler oluşturuyoruz. Bilet yapıldığı zaman şube master haline getirilir. Her bilet dalının tipik olarak birkaç işi vardır.Aktarımlar arasında değişiklik yapmak, temiz bir dal almak için?

okunabilirlik ve test için, ben oluşturmaya çalıştıklarını taahhüt:

  • tek konu üzerine
  • odak atomiktir

Bazen üzerinde tanıyor çözeltisini bozmazlar Tam olarak ne yapacağımı önceden şubede yapmayı planlıyorum. Örneğin:

  1. ziyaretçi kayıt için arka uç api oluşturun
  2. Refactor ziyaretçi kategorizasyon fonksiyonu
  3. ziyaretçi kaydı için ön uç oluşturun
  4. basit ziyaretçi kayıt onay sayfası oluşturma

Ama oldukça sık sık konuya göre bir önceki taahhütlere ait olması gereken bir gelişme yapma fırsatı buluyorum. Yukarıdaki örnekle devam edersek, 2. adımda, "ziyaretçi" nin daha iyi bir isim olacağını düşünürken, bir değişkeni "v" olarak değiştirdiğimi fark edebilirim.

Şimdi her ikisi de kötü olduğunu düşündüğüm iki seçenekten birini seçiyorum: - İşlem 2'de zaten değiştirdiğim bir şeyi değiştiren bir işlem 5 oluşturuyorum, ancak bunu biraz daha iyi yapıyorum. Bu seçeneğin kötü olduğunu düşünüyorum çünkü test ve proje geçmişi okunabilirliğini karıştırıyor. - Sıfırladığım 2-4 işlemlerini gerçekleştirir ve bunları yeniden yapar, şimdi de geçmişte gerçekleştirdiğim iyileştirmeyi, ait olduğu 2. adaya yerleştirir. Bu işin kötü olduğunu düşünüyorum çünkü bu zaman alacak.

İkinci seçeneğin üstün bir işlem geçmişi oluşturduğunu düşünüyorum, ancak yapılması zaman alıyor.

Bu benim soruma yol açar: Bu değişikliği işlem 2'ye taşımak için daha hızlı bir yol var mı?

Webstorm'daki farklı arabirime benzer bir arabirim hayal ediyorum (bunları içermek ya da geri döndürmek için değişiklikleri tıklayabiliyorum), ancak bu da hangi değişiklikleri yapmayı istediğimi seçmeme izin veriyor.

Orada hangi çözümler var?

cevap

1

Sen (rebase kullanarak aktif) bu algoritma kullanabilirsiniz:

  • taahhüt ve
  • ilk daldan değişiklikleri uygulamak
  • beşinci bu dala taahhüt eklemek yeni şube geçmek ikinci başlayarak ek şube oluşturmak
  • kabak ikinci (üçüncü ve dördüncü tamamlama) ve beşinci tamamlama

git branch feature-to-change d5c9a25 
git checkout feature-to-change 

Sonra beşinci oluşturun:

git log --pretty=format:"%h %s" --graph 
* 43e94d8 fourth commit 
* 8bfc119 third commit 
* d5c9a25 second commit 
* e17b227 first commit 

Sonra taahhüt ikinci yeni şube oluşturmak: Daha ayrıntılı olarak algoritma


aşağıda açıklanan en biz böyle git günlük çıkış olduğunu varsayalım değiştirme-değiştirme dalına katılım ve bunun üstüne üçüncü ve dördüncü taahhütleri uygulama:

# create and commit fifth commit 
git log --pretty=format:"%h %s" --grap 
* 86660c9 fifth commit 
* d5c9a25 second commit 
* e17b227 first commit 

git rebase feature-to-change feature 

git log --pretty=format:"%h %s" --graph 
* ee0a502 fourth commit 
* 2e0e2c6 third commit 
* 86660c9 fifth commit 
* d5c9a25 second commit 
* e17b227 first commit 

Şimdi uygun sırayla kaydedilmesini var, ama biz ikinci kabak ve beşinci Eğer bu adımlar çok yer almayan bu tarihe

git log --pretty=format:"%h %s" --graph 
* 758d85c fourth commit 
* 3761310 third commit 
* ee739dd second commit 
* e17b227 first commit 

alacak ezmek sonra

git rebase -i HEAD~4 

    pick d5c9a25 second commit 
    squash 86660c9 fifth commit 
    pick 2e0e2c6 third commit 
    pick ee0a502 fourth commit 

işlemek gerekir zaman ve sonunda güzel bir taahhüt geçmişi ile şube feature-to-change olsun

+0

Ben bir çözüm olarak ilan edemezsiniz, çünkü bu süreç, istediğimden daha karmaşık. Gelecek birkaç gün içinde daha basit bir cevap verilmediyse, cevabı bir çözüm olarak işaretleyeceğim. İyi bir cevap için ve yardım için zaman ayırdığınız için teşekkür ederiz! – user1283776