Öyleyse aşağıdakileri hayal edin (ve hepimiz SourceTree'yi kullanıyoruz):
- Hepimiz kökeni / gelişimi üzerinde çalışıyoruz.
- Bir hafta tatile giderim.
- İş arkadaşım, kökeni birleştirmeden / yerel gelişim şubesine geri gelişmeden son birkaç gündür yerel olarak çalışıyor.
- Bir itme yapmaya çalışır, önce birleştirmesi gerektiği söylenir ve sonra bir çekiş yapar.
- Birleşme sonrası otomatik taahhüdün devam etmesini durdurarak bir çatışma yaşar.
- Git'in SVN gibi olduğunu varsayarsak, iş arkadaşım çalışma kopyasındaki "yeni" dosyaları atar ve birleştirme işlemini yapar - bu "yeni" dosyaları başlangıç / geliştirme başından siler.
- Bu revizyonun üstünde bir haftalık geliştirme çalışmaları devam ediyor.
- Tatilden geri dönüyorum ve işimin birkaç gününün eksik olduğunu öğrendim.
Git için çok yeniyiz (bunu kullanan ilk projemiz), ama düzeltmek için yaptığım şey şuydu:
- "Develop" ifadesini "develop_old" olarak yeniden adlandırın.
- Develop_old öğesini "develop_new" adlı yeni bir dalda birleştirin.
- Develop_new dalını, birleştirme işleminden önceki son işleme sıfırlayın.
- Cherry o zamandan bu yana her bir taahhüdü seçer ve çatışmaları elle çözer.
- Develop_old ve develop_new öğelerini başlangıca kadar itin.
Bu noktada, develop_new, umarım, sonraki hafta değerinde çalışmaların yeniden uygulanmasıyla tüm değişikliklerin "iyi" bir kopyasıdır. Ayrıca, "ters işlemenin" birleştirme üzerinde tuhaf şeyler yapacağını varsayıyorum, özellikle de önümüzdeki birkaç hafta değerinde çalışmalara dayandığı için - ve bu birleştirme, yapmadığımız şeylerle birlikte istediğimiz çok şey içerdiğinden t.
Bunun bir daha asla gerçekleşmeyeceğini umuyorum, ancak tekrar olursa, işleri düzeltmenin daha kolay / daha iyi bir yolunu bilmek isterim. Bu birleşmeye dayalı olarak repoda çok fazla çalışma olduğunda "kötü" bir birleştirme işlemini geri almanın daha iyi bir yolu var mı?
git logformatınızın çıktısını çeşitli taahhütlerde neler olduğuna dair uygun ek açıklamalarla gönderebilir misiniz ? (git log --graph --pretty=oneline --abbrev-commit