Git versiyon kontrol sistemi

Mehmet Can Boz
6 min readApr 4, 2021

--

Merhabalar bugün sizlere yazılım dünyasında en çok kullanılan araçların başında gelen git ve GitHub’dan bahsedeceğim. Git , yazılıma başlayan bireyler için çok önemli bir araçtır ve kullanılması da çok yararlı ve kullanışlıdır. Kodunuzun farklı sürümlerini izlemenize ve diğer geliştiricilerle işbirliği yapmanıza yardımcı olur. Eğer bir proje üstünde çalışıyorsanız proje üstünde hangi değişikliklerin olduğunu, kim tarafından ve ne zaman yapıldığı hakkındaki bilgileri bilmek istersiniz. Git bu konuda size yardımcı olan araçların başında gelir.

Git ilk öğrenilmeye başladığında biraz korkutucu gelebilir fakat size bu yazımda git ve GitHub platformunu anlaşılır ve sade bir şekilde aktarmaya çalışacağım.

Yazımın temel başlıkları şu şekilde olacak;

Git nedir?

GitHub nedir?

Git kullanımına nasıl başlarız?

Git değişimleri nasıl kontrol eder ve iş akışı nasıl sağlanır?

Git nedir?

Git bir versiyon kontrol sistemi olarak adlandırılır. Bir kodlama projesinde diğer geliştiricilerle işbirliği yapmak veya kendi projeniz üzerinde çalışmak istiyorsanız Git kullanmanız çok önemlidir. Git sistemini bilgisayara indirmek için şu bağlantıyı kullanabilirsiniz. Bu bağlantıda bilgisayar sisteminize uygun talimatları uygulayarak kolay bir şekilde git sistemini indirebilirsiniz. (Windows,Mac,Linux)

GitHub nedir?

GitHub git projelerinizi uzak bir sunucuda(bulutta) saklamanızı sağlayan bir üründür. Önemli belirtilmesi gereken şey ise GitHub git demek değildir. GitHub sadece dosyalarınızı sakladığınız bir depolama yeridir. Github gibi dosyalarınızı saklayabileceğiniz diğer servislerden birkaçı Gitlab ve Bitbucket’dir.

Git kullanımına nasıl başlarız?

Git kullanımını terminalde komutlar yazarak veya Gitkraten gibi grafik kullanıcı arabirimi olan ürünleri kullanabilirsiniz. Fakat terminal kullanımı daha avantajlı ve kullanışlı olduğu için bu bölümden devam edeceğiz. Ayrıca git dokümantasyonuna şu bağlantıdan ulaşabilirsiniz.

İlk önce projemiz için bir klasör oluşturarak başlayalım bunun için manuel olarak yada terminale mkdir klasörismi yazarak oluşturabilirsiniz. Klasörünüzün içine giriş yapmak için ise terminalden cd klasörismi komutunu kullanabiliriz.

Resimde de görüldüğü gibi yaptığımız işlemlerden sonra dosya uzantısının sonunda oluşturduğumuz klasörün ismi bulunuyor. Bu oluşturduğumuz dosyanın içinde olduğumuzu gösterir.

Proje klasörümüze girdikten sonra Git’i kullanmaya başlamak için git init komutunu kullanarak bir depo(repository) oluşturmanız gerekecek. Bu komutu girdikten sonra ekranda herhangi bir şey görünmese de arka planda git deposu dosya içine kurulacaktır. Git deposunu görmek için windows işletim sistemlerinde , proje dosyanızın içinde gizli dosyaları görüntülemek için görünüm ayarlarınızdan gizli öğeler kutucuğuna tıklayarak veya terminalden ls -a komutunu kullanarak görebilirsiniz.

ls ile klasörümüzün içindeki dosyaları görebiliriz fakat klasörümüz boş olduğu için herhangi bir dosya göremiyoruz fakat ls -a komutu ile git tarafından oluşturulan gizli dosyaları görebiliriz.

Git deposu proje dosyalarınızda yapılan tüm değişiklikleri takip edip kaydeder. Bilgisayarımızda bulunan bu depoya yerel depo(local repository) denir. Daha önce GitHub ve Gitlab gibi servislerden bahsetmiştik. Yerel depomuzu bu servislerden birine gönderdiğimizde ise oluşan depoya uzak depo(remote repository) denir. Yani GitHub’ı yerel depomuzu sakladığımız uzak depo olarak düşünebiliriz. Bu sayede proje üzerinde birçok geliştirici ile ortaklaşa çalışmalar sürdürebiliriz ayrıca bilgisayarımızın başına bir kaza geldiğinde dosyalarımızı yedeklemeyi sağlarız.

Başka bir geliştirici bizim projemize katkıda bulunmak için GitHub üzerinde projemizi klonlayabilir veya başka bir deyişle kendi bilgisayarına indirebilir. Kullanıcı indirdiği bu projeyi kendi bilgisayarında görüntüleyebilir ve bu proje yerel depo(local repository) olarak adlandırılır.

Projenizin versiyonlarını kaydetmek için git commitişlemi uygularız. Bu sürüm diğer sürümlerden bağımsız proje dosyalarını içerir.

Commit işlemini anlamak için git içinden bulunan birbirinden farklı bölümleri anlamamız gerekir. Bu bölümler çalışma dizini(working directory), hazırlık alanı(staging area) ve depo(repository)dir.

Çalışma dizini temelde proje klasörümüzün içeriği ile temsil edilir ve projemizde dosya ekleyebileceğimiz, düzenleyebileceğimiz ve silebileceğimiz bir çalışma ortamıdır.

Hazırlık alanı kaba bir taslak alan gibidir. Bir sonraki işlememize neyi dahil etmek istediğimizi seçmek için dosyaların güncellenmiş sürümlerini ekleyebileceğimiz veya dosyaları kaldırabileceğimiz yerdir.

Ve son olarak depo, temelde bizim kayıtlarımızın yapıldıktan sonra yaşadığı yerdir. Git klasöründe, kaydetme geçmişi, objects adı verilen bir klasörle temsil edilir.

Git değişimleri nasıl kontrol eder ve iş akışı nasıl sağlanır?

Bir projeye başlamak için bir klasörün içine bir dosya eklememiz gerekir. Örnek olarak deneme klasörünün içine text1.txt(herhangi bir programlama dili dosya uzantısı da olabilir) dosyası oluşturacağız. Dosya oluşturmak için kullanacağımız komut touch dosyaismiolacaktır.

Daha sonra dosyamıza birkaç cümle ekleyelim ve kaydedelim. Terminalden git statuskomutunu girelim. Bu komut bize çalışma dizininiz ile hazırlık alanımızın durumunu söyleyecek ve ikisi arasında herhangi bir fark olup olmadığını söyleyecektir. Bu komutu çalıştırdıktan sonra bir hata alacağız, git bizi çalışma dizinimizde değişikliğe uğramış bir dosya olduğunu kırmızı renkte gösteriyor ve bunu hazırlık alanına göndermemiz gerektiğini söylüyor. Tabi bunu her değişiklik yaptığınızda göndermenize gerek yok, değişikliklerinizin hepsini tamamladıktan sonra da gönderebilirsiniz.

Değişikliğe uğramış dosyamızı hazırlık alanına göndermek için git add dosyaismikomutunu kullanıyoruz. Bu komutu terminale girersek o dosyayı hazırlık alanına(staging area) gönderiyor, eğer git add .komutunu girersek çalışma dizinindeki tüm değişikliğe uğramış tüm dosyaları hazırlık alanına gönderiyor.

Bu işlemi tamamladıktan sonra tekrar git status işlemini komutunu uygularsak git bize hangi dosyaların hazırlık alanında bulunduğunu bize gösteriyor. Gördüğünüz üzere hazırlık alanına geçmiş dosya yeşil renge döndü.

Son olarak commit(kayıt) işlemi yapmak için git commit -m 'mesaj' işlemini kullanıyoruz. Burada ki -m “mesaj” işlemi kayıt edeceğiniz sürümün ismi veya yaptığınız değişikliklerin ismini içerebilir ve “mesaj” alanını istediğiniz şekilde değiştirebilirsiniz.

Daha projemizde yaptığımız versiyon kayıtlarını görmek için “git log” komutunu kullanıyoruz gördüğünüz üzere ilk kayıt dosyası karşımıza çıktı. Ve kayıt dosyasında 40 karakterli harf ve sayılardan oluşan bir dizin görüyoruz. Bunu ileriki zamanlarda yaptığımız kayıt dosyalarını tekrar geri çağırmak için referans olarak kullanabiliriz.

— Git Branch Nedir?

Git branch projemizi dallandırmaya yarayan bir özelliktir. Örnek olarak bir proje gerçekleştiriyoruz ve projemize bir özellik koyacağız fakat bu özellik projemizde bozulmalara yol açabilir veya birçok insanın çalıştığı bir projede herkes kendine bir branch açıp o alanda çalışma yapabilir. Branch özelliği kullanarak projemizi farklı dallara ayırırız ve projemizde yapacağımız değişiklikleri o branch de devam ederiz.

Dosyamızdaki git branchleri görmek için .git/refs/heads klasörüne gidebiliriz. Gördüğümüz üzere master adında bir dosya görüyoruz. Master branchi bizim projemizin ana branchi oluyor. Terminalde git branchkomutunu yazarak projemizde bulunan branchleri kontrol edebiliriz.

Brancler gerçekten proje hazırlanmasında çok önemlidir çünkü diğer insanlarla işbirliği yapmayı ve aynı anda projenizin birden çok özelliği veya farklı bölümleri üzerinde çalışmayı çok daha kolaylaştırırlar.

git branch branchismikomutunu kullanarak farklı bir branch oluşturalım. Daha sonra git branchkomutunu girerek branch isimlerimizi görebiliriz. Gördüğünüz üzere iki adet branchimiz karşımıza çıktı. Yeni oluşturduğumuz branch üzerinden işlem yapmak için git checkout brachismikomutunu kullanıyoruz. Resimde de görüldüğü üzere dosta uzantısı özellik1 branchi oldu.

Şimdi yeni branchimiz üzerinde bir dosya ekleyelim.ve dosyamızın içine girerek bir cümle yazıp kayıt edelim. Daha sonra dosyamıza commit işlemi uygulayalım.

ls komutunu kullanarak özellik1 branchimizin içindeki dosyaları görelim. Şuan gördüğünüz üzere klasörümüzde hem text1.txt hem de text2.txt dosyası bulunuyor ve özellik1 branchi içindeyiz. Ana branche girmek için git checkout masterkomutunu kullanıyoruz. Şimdi ise gördüğünüz üzere proje klasörümüzde sadece text1.txt dosyası bulunuyor.

Yani git branch ile projemizin bir kopyasıyla başka bir alanda çalışıp değişiklikler yapabiliriz ve bu değişikliklerden ana proje dosyamız etkilenmez.

Git kullanımı hakkında güzel kaynaklar:

Şimdiye kadar buraya geldiyseniz, tebrikler! Git hakkında öğrenilecek daha pek çok şey var ve bu yazımda sadece temel kullanımında bahsettim. Bir sonraki yazılarımdan farklı konulardan bahsedeceğim.

--

--

Mehmet Can Boz
Mehmet Can Boz

No responses yet