Git Subversion'dan daha iyi değil. Ama daha da kötü değil. Bu farklı.
Temel fark, merkezi olmayan olmasıdır. Yolda bir geliştirici olduğunuzu, dizüstü bilgisayarınızda geliştirdiğinizi ve 3 saat geri gidebilmeniz için kaynak kontrolüne sahip olmak istediğinizi düşünün.
Subversion ile bir Sorununuz var: SVN Deposu ulaşamayacağınız bir yerde olabilir (şirketinizde ve şu anda internetiniz yok), taahhütte bulunamazsınız. Kodunuzun bir kopyasını oluşturmak istiyorsanız, kelimenin tam anlamıyla kopyalayıp yapıştırmanız gerekir.
Git ile bu sorunu yaşamazsınız. Yerel kopyanız bir havuzdur ve bunu taahhüt edebilir ve kaynak kontrolünün tüm avantajlarından yararlanabilirsiniz. Ana veri havuzuna yeniden bağlandığınızda buna karşı taahhütte bulunabilirsiniz.
Bu başlangıçta iyi görünüyor, ancak bu yaklaşıma eklenen karmaşıklığı unutmayın.
Git, "yeni, parlak, havalı" bir şey gibi görünüyor. Bu hiç de kötü değil (Linus'un Linux Çekirdeği gelişimi için yazmasının bir nedeni var), ancak birçok insanın sadece yeni olduğu ve Linus Torvalds tarafından yazılmadığı için "Dağıtılmış Kaynak Kontrolü" trenine atladığını hissediyorum. neden / daha iyi olduğunu bilmek.
Subversion'un Sorunları var, ancak Git, Mercurial, CVS, TFS veya başka bir şey var.
Edit: Yani bu cevap şimdi bir yaşında ve hala birçok upvotes üretir, bu yüzden biraz daha açıklama ekleyeceğim düşündüm. Bunu yazdığından bu yana geçen yıl Git, özellikle GitHub gibi siteler gerçekten kalktığı için çok fazla ivme ve destek kazandı. Bugünlerde hem Git'i hem de Subversion'u kullanıyorum ve bazı kişisel bilgileri paylaşmak istiyorum.
Her şeyden önce, Git dağıtılmış çalışırken ilk başta gerçekten kafa karıştırıcı olabilir. Uzaktan kumanda nedir? ve İlk havuzu nasıl düzgün bir şekilde kurabilirim? başta SVN basit "svnadmin create" ile karşılaştırıldığında iki soru vardır, Git'in "git init" merkezi bir kurulum kurmak için "uygun" yolu gibi görünüyor - çıplak ve --shared parametreleri alabilir deposu. Bunun nedenleri var, ancak karmaşıklık katıyor. "Ödeme" komutunun belgelenmesi, değişen insanlar için çok kafa karıştırıcıdır.
Git merkezi olmadığınızda GERÇEKTEN parlar. Evde bir sunucum ve yolda bir dizüstü bilgisayarım var ve SVN burada iyi çalışmıyor. SVN ile, depoya bağlı değilsem yerel kaynak denetimine sahip olamıyorum (Evet, SVK veya repo kopyalamanın yollarını biliyorum). Git ile zaten varsayılan mod budur. Bu ekstra bir komut olsa da git git yerel olarak yürütülürken, git push origin master ana dalını "origin" adlı uzaktan kumandaya iter).
Yukarıda belirtildiği gibi: Git karmaşıklığı arttırır. İki havuz oluşturma modu, ödeme klonlama, klonlama, gönderme ve itme ... Hangi komutların yerel olarak çalıştığını ve hangilerinin "sunucu" ile çalıştığını bilmek zorundasınız (çoğu insanın hala merkezi bir "ana depo" gibi olduğunu varsayıyorum. ).
Ayrıca, takım en azından Windows'ta hala yetersizdir. Evet, bir Visual Studio AddIn var, ama yine de git bash msysgit ile kullanıyorum.
SVN'nin öğrenmesi ÇOK daha basit olması avantajı vardır: Nasıl oluşturulacağını, taahhüt edileceğini ve ödeme yapılacağını biliyorsanız ve gitmeye hazırsanız ve dallanma, güncelleme vb. üzerinde.
Git, bazı geliştiriciler her zaman ana veri havuzuna bağlı değilse ÇOK daha uygun olma avantajına sahiptir. Ayrıca, SVN'den çok daha hızlı. Ve duyduğum kadarıyla, dallanma ve birleştirme desteği çok daha iyi (yazılması gereken temel nedenler olduğu için bu beklenecek).
Bu, Git'in Açık Kaynak projeleri için mükemmel bir şekilde uygun olduğu için neden internette bu kadar çok uğraştığını da açıklıyor: Sadece Çatallayın, değişikliklerinizi kendi Çatalınıza yapın ve ardından orijinal proje yöneticisinden değişikliklerinizi çekmesini isteyin. Git ile bu işe yarar. Gerçekten, Github'da dene, sihir.
Ben de gördüm Git-SVN Köprüler: Merkezi depo bir Subversion deposudur, ancak geliştiriciler yerel olarak Git ile çalışır ve köprü daha sonra değişikliklerini SVN'ye iter.
Ancak bu uzun eklemeyle bile, temel mesajımın yanındayım: Git daha iyi veya daha kötü değil, sadece farklı. "Çevrimdışı Kaynak Kontrolü" ne ihtiyacınız varsa ve bunu öğrenmek için fazladan zaman harcamak istiyorsanız, bu harika. Ancak, kesinlikle merkezi bir Kaynak Kontrolünüz varsa ve / veya iş arkadaşlarınız ilgilenmediği için Kaynak Kontrol'ü ilk etapta tanıtmakta zorlanıyorsanız, SVN'nin basitliği ve mükemmel araçları (en azından Windows'ta) parlar.