GIT NEDİR, NASIL KULLANILIR?

Fatih Talha Tümer
7 min readJan 20, 2023

--

Git, yazılım geliştirme süreçlerini kolaylaştıran açık kaynaklı bir versiyon kontrol sistemidir. Bu sistem sayesinde yazılım geliştirme süreci hem verimli hem de güvenli şekilde gerçekleştirilir.

Örneğin projede bir algoritma geliştiriliyor olsun. Algoritma tasarlanırken sık sık testler yapılıp yeni şeyler denenir. Bu yüzden gerektiğinde geri dönebilmek için her seferinde o ana kadar yazılmış olan kodun yedeklenmesi gerekir. Bu işlem küçük projelerde bile zor ve uğraştırıcıyken, büyük çaplı projelerde imkansıza yakındır. Git sayesinde projede yapılan değişiklikler kaydedilir. İstenilen anda istenilen herhangi bir kayda geri dönüş yapılabilir. Burada Git’in güçlü yanı, her kayıtta tüm dosyaları değil, sadece değişiklikleri kaydetmesidir.

Şimdiye kadar Git’in temel işlevinden ve bireysel/ufak çaplı projelerdeki yararından bahsettik. Peki ya iki ya da daha fazla kişinin birlikte çalıştığı büyük çaplı projelerde Git nasıl kullanılır?

Git Sunucu Servisleri

Tek başımıza kendi bilgisayarımızda projeler geliştirirken Git yeterlidir. Ancak projeyi yayınlamak istediğimzde ya da birden fazla kişi aynı proje üzerinde çalışacaksa bir Git Sunucu servisine ihtiyaç duyulur. Bu sayede birden çok kullanıcı bir projede işbirliği yapabilir ve koddaki değişiklikleri izleyebilir. Piyasada birçok servis olsa da bu yazıda en çok kullanılan iki servis olan GitHub ve BitBucket servislerinden bahsedeceğiz.

Her ikisi de birden çok kullanıcının bir projede işbirliği yapmasına ve koddaki değişiklikleri izlemesine olanak tanır. Ancak, GitHub daha yaygın olarak kullanılır ve daha geniş bir kullanıcı tabanına sahiptir. Özellikle açık kaynak yazılım projelerinde sıklıkla kullanılır. Bitbucket ise özellikle küçük ve orta ölçekli takımlar için popülerdir ve kapalı geliştirilen projeler için daha uygundur. Bitbucket ayrıca Jira, Trello gibi proje yönetim araçları ile entegre olabilir.

Git Kurulum

Bu adresten işletim sisteminize uygun sürümü seçip indirebilirsiniz. Kurulum aşamasında seçili olarak gelen seçenekleri değiştirmenize gerek yok.

Kurulum sonrasında yapacağız commit’lere kaydedilmesi için isminizi ve e-posta adresinizi ayarlamanız gerekiyor. Eğer bunları ayarlamazsanız yerel git deponuzda herhangi bir sorun yaşanmaz ancak GitHub, BitBucket gibi servisleri kullanmaya çalıştığınızda hata alabilirsiniz. Bu ayarları yapmak için şu komutları kullanabilirsiniz:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Git Komutları ve Örnek Proje

Şimdi git kurulumu ile birlikte gelen Git Bash aracılığıyla bir web sitesi projesi yapacağız. Önce kısaca komutlara göz atalım:

git help

komutu ile sık kullanılan komutlara ve açıklamalarına erişebiliriz.

  • git clone: Bu komut, bir Git deposunun bir kopyasını yerel bir dizine oluşturmanızı sağlar.
  • git init: Bu komut, yerel bir dizinde yeni bir Git depo oluşturmanızı sağlar.
  • git add: Bu komut, Git deposuna yeni dosyaları veya değiştirilmiş dosyaları eklemenizi sağlar.
  • git rm: Bu komut, Git deposundan bir dosyayı veya dizini silmenizi sağlar.
  • git status: Bu komut, Git deposundaki dosyaların durumunu gösterir.
  • git branch: Bu komut, Git deposunda mevcut olan branch’leri (kolları) gösterir.
  • git commit: Bu komut, Git deposundaki değişiklikleri kaydetmenizi sağlar.
  • git merge: Bu komut, iki veya daha fazla branch’i (kolu) birleştirmenizi sağlar.
  • git switch: Bu komut, farklı bir branch’e (kola) geçmenizi sağlar.
  • git pull: Bu komut, Git deposundaki değişiklikleri yerel bilgisayarınıza indirmenizi sağlar
  • git log: Önceki commitleri listeler
  • git checkout: Bu komut, Git deposundaki farklı bir branch’i (kolu) veya commit’i görüntülemenizi veya geçiş yapmanızı sağlar.

Öncelikle yeni bir klasör oluşturalım ve içerisine girelim:

mkdir proje
cd proje

Şimdi bu klasörü Visual Studio Code üzerinden açalım. Visual Studio Code kullanmamızın sebebi html kodlarını yazarken işimizin kolaylaştırmaktır. Bu ve bunun gibi birçok kod editörü halihazırda git desteği sunar. Herhangi bir komut kullanmadan arayüz ile de bütün git işlemleri gerçekleştirilebilir. Ancak komutları terminal üzerinden bizim göstereceğimiz şekilde öğrenmek, sistemin çalışma mantığını kavramak açısından önemlidir.

index.html dosyamızı oluşturup için basit bir web sitesi için kodlar yazıyoruz:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
border: 2px solid black;
margin: 2%;
padding: 2%;
text-align: center;
background-color: lime;
}
body{
background-color: bisque;
}
</style>
</head>
<body>
<div>
<h1>Başlık 1</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptates!</p>
</div>

<div>
<h1>Başlık 2</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptates!</p>
</div>

</body>
</html>

Sitenin görünümü şu şekilde olacak:

Şimdi git bash’e geri dönüp yeni git deposu oluşturalım ve git status ile projenin durumunu kontrol edelim:

git init
git status

Çıktımız şu şekilde oldu:

Burada mavi renkle şu anda aktif olan branch’i gösteriliyor. Bir projeye git eklendiğinde oluşan ilk branch master olur. Devamında ise az önce oluşturduğumuz index.html dosyasını git deposuna eklemediğimiz için untracked olarak görünüyor. Şimdi bu dosyayı git add komutu ile main branch’imize ekleyelim ve tekrar status ile kontrol edelim.

git add index.html
git status

Dosyamız new file olarak işaretlenmiş ve commit edilebilir olarak bekliyor. Şimdi dosyada yapılan bu değişikliği kaydetmek için commit işlemini yapmamız gerekiyor. Commit işlemi git add ile eklenmiş dosyaların o anki durumunu bir mesaj ile kaydedilmesini sağlar. Şu komutu kullanarak commit işlemini gerçekleştirelim ve yine git status ile kontrol edelim:

git commit -m "index.html oluşturuldu ve sitenin ilk hali oluşturuldu"
git status

Artık projemizin bir kayıt noktası oluşturuldu. Bu andan itibaren ne kadar değişiklik yaparsak yapalım projeyi şu anki konumuna geri döndürebiliriz. Şimdi git log komutu ile commit geçmişini kontrol edelim:

İlk commit’imizi oluşturduk. Üstteki çıktıda commit’i kimin ne zaman yaptığı, hangi branch üzerinde çalıştığım ve commit id’si görünüyor.

Şimdi index.html dosyamızda değişiklikler yapalım, style kısmındaki background-color ayarlarını değiştirerek sitemizin renkleriyle oynayalım:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
border: 2px solid black;
margin: 2%;
padding: 2%;
text-align: center;
background-color: pink;
}
body{
background-color: aqua;
}
</style>
</head>
<body>
<div>
<h1>Başlık 1</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptates!</p>
</div>

<div>
<h1>Başlık 2</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptates!</p>
</div>

<div>
<h1>Başlık 3</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptates!</p>
</div>

</body>
</html>

Arkaplan renklerini değiştirdik ve yeni bir paragraf ekledik, sitenin yeni görüntüsü şu hale geldi:

Şimdi yaptığımız bu değişikliği ekleyerek yeni bir commit oluşturalım:

git add .
git commit -m "renkler değiştirildi ve paragraf eklendi"

git add . ile tek bir dosyayı değil projedeki tüm dosyaların eklenmesini sağladık ve commit işlemin gerçekleştirdik. Şimdi git log ile commit’lerimizi görüntüleyelim:

git log

Yukarıda oluşturduğumuz 2 commit ve diğer bilgiler görülüyor. Şimdi git’in temel işlevi olan önceki sürüme geri dönme işlemini gerçekleştirelim:

git checkout 5f4cdd5e133a86314f4de0f2f05de9b574c29955

Çıktımız şu şekilde oldu:

Sol tarafta da görüleceği gibi sitemiz ilk commit’teki haline geri döndü.

Branch İşlemleri

Şimdi projede yeni bir şey deneyeceğimizi ya da projede 2 kişinin sitenin farklı sayfaları üzerinde çalıştığını düşünelim. Eğer herkes main branch üzerinde çalışırsa kişiler diğerlerinin çalışmalarını silebilir. Bu yüzden her bir çalışma için yeni branch oluşturmak gereklidir. Biz yeni deneme amacıyla yeni bir branch oluşturacağız ancak öncelikle ilk commit’ten master branch’imize dönelim:

git checkout main

Yukarıdaki çıktıda da görüldüğü gibi master branch’imize dönüş yaptık. Şimdi yeni branch’imizi oluşturalım:

git branch deneme
git switch deneme

Artık deneme branch’ımızın içindeyiz ve sitemiz pembe-mavi renklerde ve 3 paragraftan oluşan son halinde. Şimdi sitemizdeki son iki paragraf silip basit bir form koyalım:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
border: 2px solid black;
margin: 2%;
padding: 2%;
text-align: center;
background-color: pink;
}

body {
background-color: aqua;
}
</style>
</head>

<body>
<div>
<h1>Başlık 1</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga, voluptates!</p>
</div>

<div>
<form action="/action_page.php">
<label for="fname">First name:</label><br>
<input type="text" id="fname" name="fname"><br>
<label for="lname">Last name:</label><br>
<input type="text" id="lname" name="lname"><br><br>
<input type="submit" value="Submit">
</form>
</div>


</body>

</html>

Şimdi de add/commit işlemlerini gerçekleştirelim:

Şu an projemizde 2 branch var: master ve deneme. Master branch’inde 3 paragraf varken, deneme branch’inde deneme amaçlı eklediğimiz bir paragraf ve form var. Diyelim ki eklediğimiz bu form istediğimiz gibi oldu ve bunu diğer branch ile birleştirmek istiyoruz. Yani eklediğimiz yeni bir özelliği projemize eklemek istiyoruz. Bu durumda master branch’imize geri dönüp şu komutu kullanmalıyız:

git checkout master
git merge deneme

Bu komut ile deneme’deki değişiklikleri master’a eklemiş olduk.

Şimdi master branch’i aktifken sitemizin görüntüsüne bakalım:

Sonuç

Bu yazıda, Git’in temel komutlarını inceledik ve nasıl dosya ve kodlarınızı yönetebileceğinizi gösterdik. Git, takım çalışmasının yanı sıra yazılım geliştirme sürecinde kodlarınızın geçmişini izlemenizi, çeşitli sürümler arasında geçiş yapmanızı ve hata ayıklamanızı kolaylaştıran önemli bir araçtır. Git’i kullanarak projelerinizi daha organize ve verimli hale getirebilirsiniz.

--

--