Git vs Github: Git ve Github Arasındaki Fark
Yayınlanan: 2020-04-28Adlandırma söz konusu olduğunda BT, diğer sektörlerden hiçbir şekilde farklı değildir. Bazı sistemlerin kökenlerine göre adlandırıldığını, bazılarının ise özellikleri veya işlevleri göz önünde bulundurularak adlandırıldığını görürsünüz. Sonra, isimlerinin kökenleriyle, özellikleriyle veya bunlarla ilgili herhangi bir şeyle hiçbir ortak yanı olmayanlar var.
İnsanların bir sistemin neyle ilgili olduğu, ne işe yaradığı ve ne gibi faydalar sağladığı konusunda kafasını karıştıran adlandırma kurallarındaki bu tutarsızlıklardır. Örneğin, Git ve GitHub hakkında ve ikisi arasında bir fark olup olmadığı sorulduğunda hala kafası karışan birçok insan var.
Adlarındaki benzerliğin gerçekte ne olduklarıyla hiçbir ilgisi yoktur. Onlar tamamen farklı iki şeydir. Ama aynı zamanda, hala bir veya iki ortak noktaları olduğunu da söyleyebilirsiniz. Git ve GitHub hakkında konuşmadan önce, sürüm kontrol sistemlerine (VCS'ler) ve neden bu kadar önemli olduklarına biraz ışık tutalım.
İçindekiler
Sürüm kontrolü nedir?
Basit bir ifadeyle, sürüm kontrolü, kaynak kodunda veya dosyalarda yapılan değişiklikleri takip eden bir sistemden başka bir şey değildir. Bir sürüm kontrol sistemi ile, sürüm kontrol veritabanına erişerek, sizin veya başka bir kişi tarafından belirli bir dosyada yapılan değişikliklere tekrar bakabilirsiniz. Bu sistem size bir dosyanın farklı sürümlerini karşılaştırma olanağı verir, böylece belirli bir süre içinde meydana gelen değişiklikler hakkında bilgi sahibi olmanızı sağlar.
Sürüm kontrol sistemi, bir projedeki farklı dosyaların anlık görüntülerini depolayan bir veritabanı olarak adlandırılabilir. Bu anlık görüntüler, bir dosya her değiştirildiğinde alınır. Bir dosyanın farklı sürümlerinin tüm kayıtlarını tutar. VCS'ler bir dosyanın farklı sürümlerini karşılaştırmanın yanı sıra bunlar arasında geçiş yapmanıza da olanak tanır. VCS'ler dağıtılabilir veya merkezileştirilebilir. Bu iki türün nasıl farklılaştığını görelim.
Merkezi sürüm kontrol sistemleri, bir dosyanın tüm farklı sürümlerini depolamak için tek bir merkezi sunucu kullanır. Kullanıcılar bu merkezi sunucuya erişim sağlayarak bu dosyalara erişebilirler. Şimdi, bu tür VCS ile ilişkili bir dezavantaj var. Merkezi sunucu herhangi bir nedenle çalışmazsa, üzerinde depolanan tüm geçmiş gider ve hiç kimse kaybolan dosyaların herhangi bir sürümünü/versiyonunu kurtaramaz.

Dağıtılmış sürüm kontrol sistemleri, merkezi muadillerine göre bir avantaja sahiptir. Bu VCS'ler, dosya sürümlerini iki konumda depolar - merkezi sunucu ve yerel makineniz. Yani merkezi sistemlerde bahsettiğimiz dezavantaj dağıtık sistemlerde yok.
Sunucu başarısız olsa bile, dosyalarınızın tüm farklı sürümlerini yerel makinenizden alabilirsiniz. VersionControl1 adlı bir dosyanız olduğunu varsayalım. Şimdi bu dosyada birkaç değişiklik yaptınız ve değişiklikleri her seferinde kaydettiniz. Bu dosyada yaptığınız tüm değişiklikler, değişiklik yaptığınızda bu dosyanın tüm sürümlerine sahip olacak olan VCS'de saklanacaktır.
Okuyun: Piyasadaki En İyi 8 DevOps Aracı
Git nedir?
Git'in bir programlama dili olduğu izlenimine kapılan kişilerle karşılaşmış olabilirsiniz. Gerçek şu ki, bu bir programlama dili değil, dağıtılmış, açık kaynaklı bir sürüm kontrol sistemi - bu konuda en çok tercih edilen VCS'lerden biri.
Normalden daha büyük bir projenin parçası olan dosyalardaki değişiklikleri izlemek söz konusu olduğunda, sürüm kontrol sistemlerinin oynayacağı büyük bir rol vardır. Daha önce tartışıldığı gibi, VCS'ler dosyalarınızın farklı revizyonlarını veya sürümlerini depolar. Bu sürümleri istediğiniz zaman gözden geçirebilir ve dosyada yaptığınız değişiklikler iyi çalışmadıysa, dosyanın eski bir sürümünü geri yükleyebilirsiniz. VCS'ler, kodunuzla veya kodunun bir sürümüyle ilgili farklı sorunların üstesinden gelmek söz konusu olduğunda çok kullanışlıdır. Hatayı ve ne zaman kaynaklandığını öğrenmek için kodunuzun eski sürümlerine erişebilirsiniz.
Git'in kökeni oldukça ilginç. Herkesin bildiği gibi, Linux'un yaratıcısı Linus Torvalds tarafından geliştirilmiştir. Artık Git'i ya da buna benzer herhangi bir şeyi yaratma fikri bir zorunluluktan doğdu. Linux, neredeyse tüm projeleri için bir sürüm kontrol sistemi olan BitKeeper'ı kullanıyordu. Şimdi BitKeeper, sistemin ücretsiz sürümünün kullanılabilirliğini kapatmaya karar verdi. Linux'un değiştirme ihtiyacı, ücretsiz, açık kaynaklı bir sürüm kontrol sistemi oluşturma ihtiyacına dönüştü. Git'in ilk sürümünü bulmaları bir yıldan az sürdü.
Git, dağıtılmış bir VCS'dir, bu nedenle bilgisayarınızda, uzak bir sunucuda veya havuzda depolanan dosyaların tüm sürümlerini depolarken yerel makinenizde çalışır. Windows, Mac ve Linux ile uyumludur. Bağımsız olarak çalışır, bu nedenle barındırma veya internet erişimi gerektirmez.
Her Git projesinin üç farklı bölümü vardır. Bunlar Git dizini, çalışma dizini ve önbellektir. İlk bölüm, projenizin nasıl ilerlediğini izlemek için VCS'nin ihtiyaç duyduğu tüm şeyleri (meta veriler ve sıkıştırılmış dosyalar) içerir. Çalışma dizini olan ikinci bölüm, asıl işin yapıldığı yerdir. Dosyalarda yapılan değişiklik ve güncellemeler bu bölümde yer alır. Önbellek, bir sonraki proje taahhüdü için gidecek verileri içerir. Bu bölümler, bir projenin üç aşamasına karşılık gelir - değiştirilmiş, aşamalı, taahhüt edilmiş.
Git'in çeşitli faydaları vardır. Geliştiricilerin zamandan tasarruf etmelerine ve ilerlemelerinin önüne çıkan hatalar hakkında endişelenmelerine gerek kalmadan deneme yapmalarına yardımcı olur. Dallanma, Git'i dünya çapında geliştiricilerin en popüler seçimi yapan birçok özelliğinden biridir. Dallanma, geliştiricilerin kendi kodlarının ayrı bir kopyasını yazmanıza gerek kalmadan projeden ayrılmalarına olanak tanır. Dallanma Git'e özgü değildir. Diğer VCS'ler de bu işlevselliğe sahiptir. Ancak Git, onu daha hafif ve daha hızlı hale getirir.

Şimdi dallanma, orijinal kaynak kodunu herhangi bir şekilde etkilemeden denemek istediğiniz bir prototipiniz olduğunda çok kullanışlıdır. Farklı ekipler tarafından yürütülen projeler bu işlevi daha faydalı bulmaktadır. Dağıtılmış bir VCS'dir, bu nedenle bir ekibin her üyesi onu kendi makinesinde bulundurur.
Takımın tüm üyelerinin aynı anda kodu değiştirmeye karar verdiği durumlar olabilir. Bu birçok soruna yol açabilir. Bu nedenle dallanma çok önemlidir. Her üye kendi branşında çalışırken, herhangi bir sorunun çıkma olasılığı çok daha azdır. Her üyenin şubeleri aracılığıyla yaptığı katkı kaynak koduna aktarılabilir.
Git'e biraz benzeyen diğer sürüm kontrol sistemleri, diğerleri arasında SVN ve Mercurial'dir. Git hala oldukça benzersizdir ve benzersizliği, dosyaların farklı sürümlerini depolama biçiminde yatmaktadır. Bir dosya listesi değil, anlık görüntüler var. Bir dosyada her değişiklik yaptığınızda ve bu değişiklikleri kaydettiğinizde, bir anlık görüntü alır ve gelecekteki ihtiyaçlar için ona başvurur. Dosyada herhangi bir değişiklik yapmadıysanız, referans sizi önceki revizyonu vurgulayan sürüme götürecektir.
Ayrıca okuyun: Git röportaj soruları ve cevapları
GitHub nedir?
Artık Git'in nasıl çalıştığını ve tüm yazılım geliştirme döngüsünde nasıl bir rol oynadığını anlıyorsunuz. Şimdi GitHub'ın şeylerin tüm sürüm kontrolü ve yönetim şemasına nerede uyduğunu tartışalım. Git kullanan bir sürüm kontrol web barındırma hizmetidir. Kod yönetimi ve sürüm kontrolünün tüm özellikleri ve işlevleriyle birlikte gelir.
GitHub, geliştiricilerin havuzlarını çevrimiçi olarak barındırmasına ve bir proje üzerinde birlikte çalışırken ekip üyeleriyle işbirliği yapmasına olanak tanır. Bunu kullanmak için gereken tek şey bir masaüstü kullanıcı arayüzü veya web portalıdır. Git-shell komutları bile işe yarar.
Taahhüt, Git'te olduğu gibi gerçekleşir. Ancak bir fark var. Tüm değişiklikleri gerçekleştirdikten sonra, ekibinizin diğer üyelerinin bu değişiklikleri görüntülemesine ve değişiklikleri çevrimiçi olarak göndererek bir proje üzerinde aynı anda çalışmasına izin verebilirsiniz. Dolayısıyla GitHub, tüm depolarınızın depolandığı bir konumdan başka bir şey değildir.
İsterseniz burası sizin veri havuzu merkeziniz ve bir proje üzerinde çalışmaya başlamak için sadece bir hesaba ihtiyacınız var. GitHub hesabınız olduğunda, bunun ne kadar harika olduğunu anlayacaksınız. Dikkate alınması gereken bir profilin yanı sıra büyük bir depolama alanına sahip olacaksınız. GitHub'da depolanan depolar başlangıçta herkese açıktır, ancak isterseniz özel de açabilirsiniz.
GitHub'ın GUI'si, depolar oluşturmanıza ve işlemleri daha hızlı gerçekleştirmenize izin verecek şekildedir. GitHub kullanarak bir projeyi farklı programlama dillerinde barındırabilirsiniz. Onu bu kadar güçlü yapan üç özellik var. Bunlar:
1. Çatal: Başka bir geliştiricinin kodunun bir depodan kopyalanarak üzerinde değişiklik yapılmasını içeren işlemdir.
2. Çekme: Çekme isteği, bir geliştiricinin başka bir geliştiricinin kodunda yaptığı değişiklikleri o geliştiriciyle paylaşmasına olanak tanır.
3. Birleştirme: Kodları değiştirilmiş orijinal geliştiriciler, bu değişiklikleri projelerine eklemek için birleştirme kullanabilir. Katkıda bulunanlara bile kredi verebilirler.

Git ve GitHub arasındaki fark
GitHub, Git ile işbirliğini kolaylaştırır. Birden fazla geliştiricinin aynı anda bir proje üzerinde çalışmasına izin veren bir platformdur. Geliştiricilerin, diğer geliştiriciler tarafından dosyalarda yapılan düzenlemeleri gerçek zamanlı olarak görmelerine olanak tanır. Ayrıca proje yönetimi ve organizasyon özellikleri ile birlikte gelir. İzinleri ayarlamak, görev atamak, yorum denetlemeyi kullanmak ve diğer şeyler GitHub ile çok daha kolay hale geliyor.
Daha önce de belirttiğimiz gibi GitHub depoları herkese açıktır. Bu nedenle, dünyanın farklı yerlerinden geliştiriciler için orijinal kodu geliştirecek şekilde işbirliği yapmak ve katkıda bulunmak kolaydır. Bu, bir bakıma onu geliştiriciler için bir ağ sitesi yapar.
GitHub, yeni geliştiricilerin özgeçmişlerini oluşturmaları için harika bir araçtır. Dünyanın en iyi geliştiricilerinden bazılarıyla çalışarak değerli deneyimler kazanabilirler. Hatta projelerini profillerinde paylaşabilir ve katkıda bulundukları diğer kişilerin kaydını tutabilirler.
Çözüm
Git, sürüm kontrolünün temel işlevlerini öğrenmenize yardımcı olurken GitHub, kullanımını genişletmenize olanak tanır. GitHub, grafik arayüzü, görev yönetimi ve sürüm kontrol araçlarıyla kullanımı çok daha kolay. Hatta GitHub Marketplace'in yardımıyla projenize daha fazla özellik ekleyebilirsiniz. Diğer görevlerin yanı sıra hata ayıklama, yerelleştirme ve otomatik kod analizinde çok yararlıdır.
Git, Github, full stack yazılımı hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik zorlu eğitim, 9+ proje sunan Full-stack Yazılım Geliştirme PG Diplomasına göz atın ve görevler, IIIT-B Mezunları durumu, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.