Git Nedir? Ya da GitHub?

Mert Bilgiç
HardwareAndro
Published in
5 min readAug 11, 2020

Herkese merhaba, bugünkü yazımda sizlere Git ve GitHub’un ne olduğunu, projelerimizde bize nasıl fayda sağlayabileceğinden bahsedeceğim. Fakat Git’in veya GitHub’un ne olduğunu incelemeden önce, genel olarak versiyon kontrol sistemlerinin ne olduğunu öğrenmemiz gerekiyor.

Versiyon Kontrol Sistemi Nedir?

Versiyon Kontrol Sistemleri

Versiyon kontrol sistemleri, bir yazılım ekibinin zaman içinde kaynak kodda yapılan değişiklikleri yönetebilmesini sağlayan yazılım araçlarıdır. Versiyon kontrol sistemileri, kodda yapılan her değişikliği izler. Sistemde bir hata oluşması durumunda geliştiriciler, tüm takım için kesintiyi en aza indirmek ve hatayı düzeltmeye yardımcı olmak amacıyla kodu önceki sürümlerine geri alabilir.

Neden Versiyon Kontrol Sistemleri kullanırız?

Bu sorunun aslında birden fazla cevabı var, bunları şöyle sıralayabiliriz.

  • Versiyon kontrolü: Herkes hata yapabilir. Bir proje üzerinde çalışırken hata yaptığımız durumlarda eski sürümlere geri dönmek isteriz. Versiyon kontrol sistemleri, bu gibi durumlarda projemizde kaydettiğimiz ( commitlediğimiz) noktalara hızlıca geri dönüş yapabilmemize olanak sağlıyor. Ayrıca proje üzerinde kim, ne zaman değişiklik yapmış, ne gibi farklılıklar oluşmuş bunların da takibini kolayca yapabiliyoruz.
  • Aynı projede birden çok takım üyesinin çalışabilmesi: Bir proje üzerinde iki veya daha fazla kişi çalıştığınızı düşünün. Diğer geliştiricilerle aynı anda yaptığınız değişiklikler var ve birbirinizin bundan haberi yok :) Ya da haberi olsa bile sürekli değişiklikleri birbirinizle paylaşmanız gerekiyor. Ne kadar zor olurdu değil mi? İşte versiyon kontrol sistemleri böyle zorlukları ortadan kaldırıyor.
  • Kodu kolayca depolayabilme: Üzerinde çalıştığınız projenin dosyalarını, ya da değişiklik yaptığınız dosyaları diğer geliştiricilerle sürekli paylaşmanız gerekmekte. Bunun zor olsa da birçok yolu var (FTP üzerinden paylaşmak, versiyonları ziplemek ve paylaşmak vs…). Fakat versiyon kontrol sistemleri ile çalışan GitHub, GitLab, BitBucket gibi online servislerde kodunuzu depolayabilir, diğer geliştiricilerle paylaşabilirsiniz. Hatta bu ortamlardaki açık kaynak kodlara da katkıda bulunabilirsiniz :) Ayrıca bu servisler temel özelliklerde ücretsiz sunulmakta 🎉

Peki ya Git Nedir?

Hayattaki harika olan diğer pek çok şey gibi, Git de biraz yaratıcı yıkım ve ateşli tartışmaların sonucunda ortaya çıktı.

Linux kerneli oldukça geniş bir kapsama sahip bir açık kaynaklı yazılım projesidir. Linux kernelinin bakım süresinin büyük bir kısmında (1991–2002) yazılıma yapılan değişiklikler yamalar ve arşivlenmiş dosyalarla aktarıldı. 2002 yılında Linux kernel projesi tescilli bir dağıtık versiyon kontrol sistemi(DVKS) olan Bitkeeper’i kullanmaya başladı.

2005 yılında Linux kernelini geliştiren toplulukla Bitkeeper’i geliştirmiş olan ticari şirket arasındaki ilişkiler koptu ve Bitkeeper’in dağıtık versiyon kontrol sisteminin ücretsiz olma durumu şirket tarafından kaldırıldı.

Bu da Linux’u geliştiren topluluğun (özellikle Linux’un yaratıcısı olan Linus Torvalds’ın) Bitkeeper’i kullanırken edindiği deneyimler üzerinden kendi dağıtık versiyon kontrol sistemini geliştirmek istemesine sebep oldu. (Kaynak: Git Resmi Websitesi)

Ve böylece Git doğmuş oldu…

Bu hikayeden anlayacağımız üzere Git, Linux’u geliştiren topluluk tarafından üretilmiş, hız ve minimalizm felsefesini temel edinmiş bir versiyon kontrol sistemi yazılımıdır.

GitHub nedir? Farkları nelerdir?

Aslında GitHub için, Git repolarımızı tutabileceğimiz bulut tabanlı bir servis diyebiliriz. Yani, diyebilirdik. Çünkü GitHub artık çok daha fazlasını yapıyor :)

İlk olarak GitHub kullanabilmek için bir hesap oluşturmanız gerekmektedir. Buradan GitHub’a kayıt olabilirsiniz.

Üzerinde çalıştığımız yazılım projelerini, projelendirme, kodlarını depolama, CI/CD gibi DevOps işlemleri, issue takip ve koda katkıda bulunmak pull request gibi birçok işlemi GitHub üzerinde yapabiliyoruz.

Hadi biraz GitHub arayüzünü inceleyelim.

GitHub anasayfasına girdiğimizde bizi böyle bir sayfa karşılıyor, sayfanın solunda kendi repositorylerimiz, ortasında takip ettiğimiz insanların GitHub üzerindeki aktiviteleri, sağda ise GitHub’un rastgele önermiş olduğu bazı repositoryler bulunmakta.

Bu ekran ise repository ekranımız, ilk sekmede projeye ait kodlar ve commitleri görüyoruz. Issues sekmesi, projede diğer kullanıcıların karşılaşmış olduğu hataları paylaştığı bir kısım.

Issues ekranı

Pull requests sekmesi ise kod üzerinde değişiklik yapmış kullanıcıların kodu asıl repository’e iletmek için istekte bulunduğu, repository sahibinin ise bu istekleri onayladığı veya reddettiği kısımdır.

Burada daha önce açılmış ve sonuca erişmiş iki adet pull request görüyoruz.

Actions kısmı ise, GitHub’un geliştiricilerin CI/CD yapabilmelerine olanak sağlayan özelliği. GitHub Actions ile, kodları yöneten, paylaşan ve dağıtan iş akışları oluşturabiliyoruz.

Projects kısmında ise, üzerinde çalıştığımız yazılım projesini planlamak, yapacağımız görevleri oluşturmak, proje üzerindeki ilerleyişi görmek gibi işleri kolaylıkla yapabiliyoruz.

Wiki kısmına, projemiz için bir wiki sayfası oluşturabiliyor ve bu sayfayı diğer kullanıcılarla paylaşabiliyoruz. Genel olarak projenin dokümantasyonu bu wiki sayfaları aracılığıyla gerçekleştiriliyor.

Security kısmı ise projemizde kullandığımız paketlerin ne kadar güvenli olduğunu bizlere gösteriyor. Ayrıca eğer bir pakette güvenlik açığı varsa GitHub sizi bu güvenlik açığına karşı uyarıyor ve bahsi geçen paketi güncelleyebilmeniz için otomatik olarak bir pull request oluşturuyor.

Insights kısmında ise projenin sayısal verilerini inceleyebiliyoruz. Bu sayfa genel olarak commit sayısı, kim ne kadar commit yapmış, projedeki issue ve pull request sayısı, projenin kaç kere indirildiği (clone) gibi proje için önemli verileri içermekte.

Settings kısmı ise projenin ismi, gizliliği gibi proje ayarlarını yapabileceğimiz kısım olarak karşımıza çıkmakta.

Bu yazıda ne kadar GitHub’dan bahsetsem de, şu an GitLab, BitBucket gibi Git servisleri de oldukça yoğun bir şekilde kullanılmakta. Umarım bu yazı sizin için verimli olmuştur :) Daha sonraki yazılarda görüşmek üzere 👋 👋

--

--