Neden hemen birleştirilmiş değişiklikler yapmayasınız ki?


16

Ofisim sürüm kontrolümüz için Git ve SourceTree kullanıyor. Bu ortaya çıktı çünkü katıldığımda sıfır sürüm kontrolü vardı ve SourceTree şimdiye kadar kullandığım tek sistemdi. Ben hiçbir şekilde uzman değilim, ama iş arkadaşlarımdan en deneyimli olanıyım, bu yüzden herkesi Git'i düzgün kullanmasını ve yaptıkları hataları düzeltmeyi öğretmekten sorumlu fiili uzmanım.

Git ve SourceTree'den geçen ve sürecin her adımını açıklayan bir öğretici belge hazırlıyorum. Çekme işleminde, SourceTree iletişim kutusu "Birleştirilmiş değişiklikleri hemen uygula" seçeneğini belirlemenizi sağlar. Bunun ne yaptığını ve neden faydalı olduğunu anlıyorum. Ne anlamıyorum kimse neden olduğunu değil bu özelliği kullanmak istiyorum.

Birisi, birleştirilmiş değişikliklerinizin neden otomatik olarak yapılmasını istemediğinizi açıklayabilir mi? Akıl yürütmeyi anlamaya çalışıyorum, böylece özelliğin yararlılığını daha iyi açıklayabilir ve gelecekte hangi tuzaklara bakılacağına dair bir fikir edinebilirim.

Düzenleme: Sorumun bağlantılı sorunun bir kopyası olduğuna inanmıyorum. Bağlantılı soru genel olarak ne sıklıkta taahhütte bulunacağını soruyor. Neden bir SourceTree birleştirme işlemek ile ilgili belirli bir özelliği kullanmamayı tercih ediyorum soruyorum.



1
İyi sebepler ister misin? Çünkü insanların vahşi doğada söylediklerini duyduğum kodu kontrol etmeyi geciktirmek için çeşitli nedenler sağlayabilirim, ancak bunların birkaçı iyi nedenlerdir.
18'de

Düşünebilmemin tek nedeni, birleşme çakışmaları nedeniyle bir birleştirme başarısız olduğunda. Ancak SourceTree zaten böyle olursa taahhütte bulunmaz.
Robert Harvey

Bir yan not: Neden kendi dersinizi yazıyorsunuz? Bitbucket'in zaten harika bir öğreticisi var. confluence.atlassian.com/bitbucket/…
winkbrace

@winkbrace Bitbucket kullanmıyoruz; her şeyi yerel bir ağda tutuyoruz. Atlassian'ın harika eğitimine atıfta bulunuyorum , ancak Git ve sürüm kontrolüne yeni giren insanlara verebileceğim biraz daha özlü bir şey istedim. Bu gerçekten bir tanıtım ve prosedürel "nasıl ve neden taahhüt / itme / çekme / vb" böylece insanlar yere isabet.
David K

Yanıtlar:


26

Bu özelliği kullanmak istemem.

Çatışma olmaması, şubemde birleştirilen değişikliklerin kabaca yaptığım kodlarla aynı olmadığı anlamına geliyor. Bu, değişikliklerin benim değişikliklerimle uyumlu olduğu anlamına gelmez. Bu, kodun derleneceği veya kodun çalışacağı veya testlerin geçeceği anlamına gelmez.

Başka bir deyişle, bu seçeneği kullanarak potansiyel olarak iyi durumda olmayan ve düzeltmek için yeni bir taahhüt gerektiren sahte bir kod taahhüdü ile sonuçlanırım. Bu işi yine de yaptığım için ve bu sahte taahhüdü hiçbir zaman yanlışlıkla bile yukarı doğru itmemem gerektiği için (İyilik yasak, birisi bunu başka bir dalda birleştirebilir !), İlkinde bu taahhüdü oluşturmak için hiçbir neden göremiyorum. yer.


Muhtemelen, özellik dalları oluşturuyorsunuz ve her küçük değişikliği ana dalda birleştirmiyorsunuz. Birleştirmeler, aynı özellik dalında aynı sınıf üzerinde birden çok kişi çalışmadığı sürece, bir özellik dalında çakışmalara neden olması olası değildir.
Robert Harvey

4
@RobertHarvey Evet ama muhtemelen ana dalı sık sık şubemde birleştiriyorum. Yorumunuzda, farklı özelliklerin doğal olarak farklı sınıflara / modüllere dokunacağına dair gizli bir varsayım var, ancak herkes şanslı değil. Şans eseri bir yerde bir şey yapan herkesin dokunması gereken bir Tanrı sınıfına sahipsiniz ve bu konuda fazla bir şey yapamazsınız. Ayrıca çapraz kesme özellikleri vardır (çünkü her 10 satır koddan birinin değiştirilmesi gereken bazı kütüphaneleri yükseltin ...) "Oraya gitmeye çalışmayın" argümanı biliyorum, ama ya zaten oradaysanız? Eşeği sağlam kazığa bağlamak.

2

Birleştirme işleminden sonra, yerel depodaki dosyalarda değişiklikler olabilir. "Birleştirilmiş değişiklikleri derhal uygula" seçeneğini ayarlamadığınız sürece, bu değişiklikler otomatik olarak yerel olarak gerçekleştirilmez.

Bu seçeneği belirlemezseniz, dosyalar SourceTree'de taahhüt edilmemiş değişiklikler olarak görünür.

Bunun nedeni Git'in açıkça söylemediğiniz sürece kendisinin işlememesidir ve SourceTree bir Git GUI'sidir. "Birleştirilen değişiklikleri hemen uygula" seçeneği bir komut kısayolu olduğu için bir seçenek değildir.

Yani, nedeni değil bu özelliği kullanmak isteyen apaçıktır: Tüm manuel veya değil taahhüt gerçekleştirmek istiyoruz.

Diyelim ki master'ı özellik dalınıza çekiyorsunuz. Bir iş arkadaşı farklı bir özellik dalı üzerinde çalışıyor. Bu iş arkadaşının bir şeyleri kırma geçmişi var. Birleştirme, bu iş arkadaşı tarafından paylaşılan paylaşılan kodda değişiklikler içeriyor. Bu nedenle, ekibin geri kalanıyla birlikte, bu iş arkadaşı tarafından çalışmanızı etkileyecek hiçbir değişiklik olmadığından emin olana kadar birleştirilmiş değişiklikler yapmayın .

Sadece teorik olarak, bu özelliği kullanmamak için iyi bir neden olmadığı için, gerçekte, herhangi bir sayıda iyi neden olabilir. Eğitiminizle ilgili olarak, "100 üzerinden 99 kez, bu kullanmak istediğiniz seçenek" diyebilirim. Özellikle diğerlerinin sürüm kontrolü konusunda yeniyse, kullanmama konusunda gerçekten ayrıntıya girmeniz gerektiğini düşünmüyorum. Tüm bunlar öğreticinin ne kadar derinlemesine çalışacağınıza bağlıdır.


2

Taahhütlerinizi otomatik olarak itmek için bir post-taahhüt kancası kullanıyorsanız ( /programming//a/7925891/6781678 adresinde olduğu gibi ), bazı şüpheli kaliteyi zorlamaktan kaçınmak için bu seçeneğe ihtiyacınız olabilir .

Ben de asla kullanmam.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.