Git, bilgisayar dosyalarındaki değişiklikleri izlemek için kullanılan bir versiyon kontrol sistemidir. Bir projede yer alan kişiler arasındaki koordinasyonu ve zaman içerisinde ki gelişimlerin takibini sağlar.
Özetle: Git, bir versiyon kontrol sistemidir ve kod değişikliklerini takibini sağlar.
Git’in en önemli özerlliği versiyonlar ve geliştiriciler arasında ki farkı doğru bir şekilde bizlere sunmasıdır. Bunun için Git proje üzerinde çalışan her geliştirici için yeni bir branch (dal – yeni bir çalışma alanı) oluşturur. Böylelikle master branch’ın (ayna kaynağın) her zaman production-quality koda sahip olması
sağlanır.
Not: Git, her işlemde her dosyanın ayrı bir kopyasını saklamaz, ancak her işlemde yapılan değişiklikleri takip eder!
Git’i Windows, Mac ve Linux’e kurabilirsiniz. Çoğu macOS ve Linux sisteminde Git varsayılan olarak kuruludur. Ancak Windows’a manuel olarak kurmanız gerekir.
Git’i linkteki web sitesinden ücretsiz olarak indirebilirsiniz: https://www.git-scm.com/
Kurulum tamamlandıktan sonra herhangi bir terminal (local terminaller veya yükleme ile gelen Git Bash) üzerinden git kullanımına başlayabilirsiniz.
İlk olarak Git’in başarılı bir şekilde kurulup kurulmadığını takip etmek için versiyon kontrolü yapalım.
git --version
Git’i ilk kullanmaya başladığınızda yapacağınız yapılandırmalar için git config komutunu kullanın. Aşağıdaki komut ile Git’e kim olduğunuzu bildirin.
git config --global user.name "w3schools-test"
git config --global user.email "test@w3schools.com"
Not: Bilgisayarınızdaki her repo için kullanıcı adını ve e-postasını ayarlarken global anahtar kelimesini kullanın. Yalnızca mevcut repo için ayarlamak yapacak iseniz global anahtar kelimesini kullanmayabilirsiniz.
Bir proje dosyası oluşturun ve terminal üzerinden oluşturduğunuz proje dizinine gidin. Aşağıdaki komutları kullanarak proje dosyası oluşturabilir ve dizine geçiş yapabilirsiniz.
mkdir myproject
cd myproject
Artık projenizin takip için doğru klasörde git’i başlatabiliriz.
git init
Bu komut ile birlikte ilk git repomuzu oluşturduk.
Not: Git, değişiklikleri takip etmek için proje dizinin gizli bir klasör oluşturur. Bilgisayarınızda gizli dosya ve klasörleri gösteri seçeneğini aktif ederseniz Git dosyasını görebilirsiniz. Artık Git projenizin izlemesi gerektiğini biliyor.
Az önce ilk lokal Git reponuzu oluşturdunuz. Ama henüz bir içerik yüklemesi yapmadınız. O zaman birkaç dosya ekleyelim ve bir editor (vscode) ile açalım. Örneğin proje dosyanıza aşağıdaki gibi bir html sayfası ekleyebilirsiniz (index.html).
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Şimdi tekrar terminali açalım ve aşağıdaki komut ile mevcut çalışma dosyalarımızı listeleyelim.
ls
ls komutu proje dizinindeki dosyaları listeleyecektir. Index.html’nin orada olduğunu görebiliriz.
Şimdi ise Index.html’in Git durumunu kontrol edip repomuzun bir parçası olup olmadığına bakıyoruz:
git status
Bize şu şekilde bir sonuç dönecektir.
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
Şimdi proje dosyamızda bir adet Index.html adlı çalışma dosyamız var fakat Git repomuza eklenmemiş durumda. Git reposunda dosyalar 2 durumda olabilir:
Boş bir repoya ilk kez dosya eklediğinizde, bunların tümü izlenmez. Git’in bu dosyaları takip etmesini sağlamak için bunları bildirmemiz gerekir.
Şuanda VS Code gibi bir editör kullanıyorsanız Index.html dosyasının yanında bir U simgesi göreceksiniz. Bu dosyanın Untracked olduğunu işaret eder.
Git Add komutu takip edilmesini istediğimiz dosyanın git reposuna eklenmesini sağlar. Oluşturduğumuz Index.html dosyasını Git repomuza ekleyelim.
git add index.html
Şuanda takip işlemi için dosyamız Git reposuna eklenmiş durumda VS Code kullanıyorsanız artık Index.html dosyasının yanında bir A simgesi göreceksiniz.
Şimdi son durumu kontrol edelim.
git status
Yeni eklediğimiz projenin Git reposuna eklendiği bilgisini bizlere verecektir.
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
Aynı anda birden fazla dosyayıda Git reponuza ekleyebilirsiniz. Bunun için projemize bir style dosyası daha ekleyelim (style.css).
body {
background-color: lightblue;
}
h1 {
color: navy;
margin-left: 20px;
}
Index.html dosyamızıda aşağıdaki gibi düzenleyelim.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
Şuanda VS Code üzerinde style.css dosyasının yanında U (Untracked) Index.html dosyasının yanında (M) (Modified) simgesini göreceksiniz.
Şimdi tüm dosyaları Git Repomuza dahil edelim.
git add --all
Proje dizinindeki tüm dosyalar Git Repomuza eklenmiş durumda tekrar kontrol edelim.
git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
new file: style.css
Artık tüm dosyalarımızın eklendiği görüyoruz.
Not: git add –all komutunun kısa yolu git add -A’dır.
Tüm proje dosyalarımızı Git repomuza ekledik. Şimdi takibi başlatma zamanı. Commit, kod tabanınızdaki belirli bir zaman dilimindeki değişiklikleri kaydetmek için kullanılan bir işlemdir. Projenizde yapılan değişikliklerin bir anlık görüntüsünü temsil eder. Her commit, bir önceki durumdan farklılıkları içerir ve projenin gelişimini adım adım takip etmenizi sağlar.
Commitler, projenizin tarihçesini oluşturur ve bir projenin gelişimini izlemenin yanı sıra, geriye dönük değişiklikleri gözden geçirmenizi ve yönetmenizi sağlar.
Her commit’e bir mesaj eklemek zorundayız. Böylece diğer geliştiricilerle iletişim kurmak ve geçmişte yapılan değişiklikleri hızlı bir şekilde gözden geçirmek kolaylaşır.
git commit -m "Ilk Projemin Ilk Takibi"
[master (root-commit) c85d3e3] Ilk Projemin Ilk Takibi
2 files changed, 20 insertions(+)
create mode 100644 index.html
create mode 100644 style.css
fatih-MacBook-Air:gitdeneme alkanfatih$
Commit işlemi için git commit anahtar kelimesiyle -m “mesaj” anahtar kelimesiylede mesaj iletilir.
Projeniz artık “Ilk Projemin Ilk Takibi” mesajıyla Git reponuza yüklenmiştir.
[master (root-commit) c85d3e3] Ilk Projemin Ilk Takibi
2 files changed, 20 insertions(+)
create mode 100644 index.html
create mode 100644 style.css
Artık Git kullanmayı öğrendiniz. Bundan sonra projenizde yapacağınız tüm değişikliklerde eklemelerde git add ve git commit işlemlerini sırasıyla yapmanız yeterlidir. Ama bazı durumlarda özellikle küçük operasyonlar yaptığımızda hazırlama ortamını kullanmadan direk commit yapmak isteyebiliriz. Bu durumda git commit -a
komutu, Git’in değiştirilmiş dosyaları otomatik olarak sahneye alıp (git add
işlemi), ardından bu değişiklikleri bir commit ile kaydetmesini sağlar.
Şimdi Index.html üzerinde bazı değişiklikler yapalım.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Hello world!</h1>
<p>Yeni Bir Satır Kod Eklendi</p>
</body>
</html>
Gir repomuzun durumunu tekrar kontrol edelim. Ancak bu sefer değişiklikleri daha kompakt bir şekilde görmek için –short seçeneğini kullanacağız.
git status --short
Sonuç bilgisi bize kısa durum ifadeleri olarak verilecektir.
M index.html
O zaman add yapmadan doğrudan commit edelim.
git commit -a -m "Yeni bir satır eklendi"
[master 0f4fccf] Yeni bir satır eklendi
1 file changed, 1 insertion(+)
Not: Bu işlem pek tavsiye edilen durum değildir.
Git commit logu, projenizde yapılan commitlerin kronolojik bir listesini sunar. Commit logları, commitlerin kim tarafından, ne zaman ve hangi değişiklikleri içerdiğini belirtir.
git log
commit 0f4fccf5773c9927baab80cb9dfbafe557362267 (HEAD -> master)
Author: alkanfatih <alkanfatih@hotmail.com.tr>
Date: Sun Feb 25 18:47:32 2024 +0300
Yeni bir satır eklendi
commit c85d3e36b78b8ae092252dff4d490da656d3553a
Author: alkanfatih <alkanfatih@hotmail.com.tr>
Date: Sun Feb 25 18:27:46 2024 +0300
Ilk Projemin Ilk Takibi
Bu komut, tüm commitleri gösterir. Commit logunu daha fazla ayrıntı veya farklı formatlarda görmek için çeşitli seçenekler kullanılabilir. Örneğin:
git log --oneline
: Commitleri tek satırda gösterir.git log --author=<author_name>
: Belirli bir yazarın commitlerini gösterir.git log --grep=<pattern>
: Belirli bir desene uyan commitleri gösterir.Bu komut, çalışma dizinizdeki değiştirilmiş dosyalar arasındaki farkları ve ayrıca sahneye alınmış ancak henüz commit edilmemiş değişiklikleri de gösterebilir.
git diff
Bu komut, mevcut çalışma dizinizindeki değiştirilmiş dosyalar arasındaki farkları gösterecektir. Eğer belirli bir dosyanın değişikliklerini görmek istiyorsanız, dosya adını da belirtebilirsiniz:
git diff dosya_adı
git diff
komutu, çalışma dizinindeki değişiklikleri karşılaştırmak için kullanılır. Eğer sahneye alınmış (staged) değişiklikleri görmek istiyorsanız ve henüz commit etmemişseniz, git diff --staged
komutunu kullanabilirsiniz. Bu, sahneye alınmış dosyalar ile son commit arasındaki farkları gösterecektir.