Zamanla dalımı tekrar gelişmeye birleştirmeye hazırım (benimkine önem verir)
Çatışmaların ele git merge
alınması genellikle içeride olduğundan daha basittir git rebase
. Git merge'de aynı anda değiştirilmiş dosyaların listesini görebilirsiniz. Diğer iş arkadaşları tarafından ne kadar taahhütte bulunulursa yapsın, bir kere birleşmen gerekecek . Rebase iş akışıyla, aynı çakışmaları tekrar tekrar ele geçirebilir ve manuel olarak gözden geçirmeniz gerekebilir. 13. taahhüdü tamamlamaya başlayabilir ve tünelden ışığı göremediğinizi hissedebilirsiniz .
Tecrübelerime göre, tekrarlanan yeniden kazanım çatışmalarını saf bir şekilde çözmeyi denediğimde, birinin değişikliklerini ya da derlemeyen bir uygulamayı kaybediyorum. Sık sık ben ve iş arkadaşlarım çok çalıştım, ancak tekrarlayan çatışmaların karmaşıklığı yüzünden öylesine şaşkına döndüm ki, bir miktar yeniden yapılanma taahhüdünün ardından önceki çalışmalarımızı iptal etmek ve kaybetmek zorunda kaldık.
Size birkaç teknik önereceğim ama onlar birleşmenin görevi otomatikleştirmekten daha kolay olmasına yardımcı olabilirler.
- Kaynak / dil dosyaları . Bir kaynak dosyasında ek değişiklikleriniz varsa , değişikliklerinizi başkalarının değişikliklerine karşı kolayca hatırlayabilmeniz için bunları her zaman dosyanın sonuna taşıyın . Değişikliklerinizi en alttaki kopyalayıp yapıştırabilir veya çakışma işaretleyicilerini kaldırabilirsiniz.
- Yap. Değil. KESİNLİKLE. YENİDEN biçimi . Ne siz ne de diğer geliştiricileriniz günlük çalışma sırasında "büyük kod reformat" ı yapamazsınız. Kod reformat, çatışma yönetiminde aşırı sayıda yanlış pozitif ekler. Kod reformat yapılabilir
- Arttırıcı, örneğin her geliştirici tarafından, otomatik bir araç kullandıkları anda (örneğin Eclipse'in tasarrufta yeniden biçimlendirme seçeneği vardır, vanilya Visual Studio'da yoktur). Kesinlikle her geliştirici, IDE'niz tarafından yenilen bir format dosyasına kodlanmış aynı kod formatlama standartlarını kullanmalıdır. Size bir fikir vermek gerekirse, 4 boşluk veya 2 sekme olması farketmez, ama herkes aynı şeyi kullanıyorsa, gerçekten önemlidir.
- Serbest bırakılmadan hemen önce, bir takım lideri tarafından. Eğer insanlar bir dal üzerinde çalışmadıklarında, yani bir daldan önce bir "kod reformat" taahhüdü gerçekleşirse işler daha kolay hale gelir
- İnceleme çalışanlar arasında çalışma bölme. Bu, çoğu mühendisliğin geldiği kısım. Diğer cevapların da belirttiği gibi, farklı işler yapan birden fazla geliştiricinin aynı kaynaklara dokunması gerekiyorsa, tasarım kokusudur. Her eş zamanlı geliştirici tarafından hangi bölümün değiştirileceği hakkında takım liderinizle görüşmeniz gerekebilir.
Ayrıca takımlarımdaki Git iş akışlarında bazı kötü alışkanlıklar gördüm. Genellikle insanlar şubelerine taşınır. Şahsen, her biri bir veya iki satırlık işleyen "düzeltme" etiketli 10 ila 20 komisyon ekleyen bir geliştiriciye şahit oldum. Politikamız, taahhütlerin size bir fikir vermek için JIRA biletleri ile etiketlenmiş olmasıdır.
@ JacobRobbins git rebase
günlük bir iş yapmayı önerir . Yaklaşımını ileri itmek istiyorum.
Öncelikle, taahhüt sayısını bir avuç seviyesine düşürmek için yeniden rebase kullanın. Ve sadece dallanmış olduğunuz taahhüt olan orijinal gelişme dalına yeniden yatırım yapın. Avuç deyince, 3 veya 4 (örneğin tüm ön uç, tüm arka uç, tüm veritabanı ekleri) veya insanca makul herhangi bir rakam anlamına gelebilir. Onları birleştirdikten sonra, yeniden fetch
oluşturduğunuz alanı yukarı akış dalı üzerinde kullanın ve çalıştırın. Ekibiniz kendi yaklaşımlarını gözden geçirmedikçe, bu sizi çatışmalardan kurtarmaz, ancak hayatınızı daha az acı verici hale getirir.
Belirli görevler hakkında ek sorularınız varsa, arama yapmaktan ve Stackoverflow'tan sormaktan çekinmeyin.
Reformatsız ve izci kuralı hakkında [Düzenle]. RE-formatını , sizin anlamımın, sizin tarafınızdan dokunulmamış kod da dahil olmak üzere tüm kaynak dosyayı sıfırdan biçimlendirme görevi olduğunu vurgulamak için biraz eşleştirdim . Her zaman mükemmel bir çocuk izci olan kendi kodunuzu biçimlendirmenin tersine, kendim de dahil olmak üzere bir dizi geliştirici, dosyanın tamamını IDE'nin yetenekleriyle yeniden biçimlendirmek için kullanılır. Dosyaya başkaları tarafından dokunulduğunda, etkilenen satırlar içeriklerinde ve anlambilgilerinde değişmese bile Git dosyayı bir çatışma olarak görür. Yalnızca çok güçlü bir dil farkındalığı olan editör, çatışmanın yalnızca en iyi biçimlendirilmiş parçanın biçimlendirilmesi ve otomatik olarak birleştirilmesiyle ilgili olduğunu önerebilir. Ama böyle bir aracın kanıtı yok.
Ne de olsa, izci kuralı sizi diğer insanların pisliğini temizlemeye zorlamaz. Sadece senin.