Github'da barındırılan oldukça küçük bir açık kaynak projesine katkıda bulunuyor. Böylece diğer insanlar işimden faydalanabilir, Github'a kendi çatalımı yarattım. Github'un terminoloji seçimine rağmen, ana projeden tamamen ayrılmak istemiyorum. Ancak, tüm çalışmalarımın ana depoya kabul edilmesini beklemiyorum veya istemiyorum. Bununla birlikte, bir kısmı, ana depoya birleştirildi ve bunun devam etmesini bekliyorum. İçinde bulunduğum problem, iki ağacın, kodun aralarında kolayca paylaşılabildiği bir durumda nasıl saklanabileceğidir. Ben ya karşılaştı olacakAçık kaynak projelerinde git depoları için en iyi yöntemler
Bazı durumlar şunlardır:
- Daha sonra ana depoya kabul edilir kodu işlemek. Bu depodan geldiğimde, benim taahhüt benim deposumda çoğaltılır.
- Ana depoda asla kabul edilmeyen kodlar yapıyorum. Gelecekte bu depodan çektiğimde, iki ağaç birbirinden uzaklaştı ve sabit kaldı.
- Başka bir kişi gelir ve çalışmalarını depoya dayandırır. Böylece, mümkünse, örneğin git rebase kullanarak ittiğim işleri değiştirmekten kaçınmalıyım.
- Kodunu ana depoya göndermek istiyorum. İdeal olarak, değişikliklerim, ana depoya doğrudan ve temiz bir şekilde uygulanabilen yamalar haline dönüştürülebilmelidir (ideal olarak git biçimini kullan).
Bildiğim kadarıyla iki veya özellikle iyi çalışan hiçbiri bu işlemek için muhtemelen üç yolu vardır söyleyebilirim:
- Sıkça baş dışına göre benim değişiklikleri tutmak için rebase budala çalıştırmak yukarı akış deposu. Bu şekilde, yinelenen işlemleri kaldırabilirim, ancak çoğu zaman geçmişi yeniden yazmak zorunda kalıyor ve bu da işlerini benimkilerden çıkarmak isteyen insanlar için sorunlara neden oluyor.
- Sıklıkla üst bilgi havuzu değişikliklerini benimkiyle birleştir. Bu benim için tamam çalışıyor, ancak kodumu yukarı akış havuzuna göndermeyi kolaylaştırıyor gibi görünmüyor.
- Bunların bazı kombinasyonlarını kullanın ve bazı şeyleri sırayla tutmak için muhtemelen kiraz toplama özelliğini kullanın.
Bu durumda başkaları ne yapmış? Durumumun, çeşitli çekirdek katılımcılar ve Linus'un ana deposu arasındaki ilişkiye benzediğini biliyorum. Bu yüzden, bununla başa çıkmanın iyi yolları olduğunu umuyorum. Gitmek için oldukça yeni oldum, bu yüzden tüm nüansları ustalamadım. Son olarak, özellikle Github nedeniyle, terminolojim tamamen tutarlı veya doğru olmayabilir. Beni düzeltmek için çekinmeyin.
Not: Yeniden yapılandırılmış değişikliklerinizi zorladığınız (zorla) bile, diğer kişilerin de güncellemek için kolayca rebase ile çekebileceğini unutmayın. Tarihin sürekli olarak yeniden yazıldığı başka bir atölye. Bunun üzerine, her şeyi silebilmek için zorlama kuvvetinden biraz daha dikkatli olmanız gerekir :) – rubenvb