
Git » versiyon kontrol ve kaynak kod yönetim sistemidir. Git ve Github aynı şey değildir. Git, version kontrol sistemidir. Github ise git ile uyumlu çalışabilen bir depolama alanıdır. Github gibi depolama hizmeti veren başka siteler: Gitlab ve Bitbucket
Git, Linus Torvalds tarafından tasarlanıp geliştirilmiş ve GNU Genel Kamu Lisansı’nın 2. sürümüyle lisanslanmış bir özgür yazılımdır.
Git Downloads
Git kurulumu oldukça basittir. -https://git-scm.com/downloads sayfasından git programı indirilir. İşletim sisteminize göre indirme yapmalısınız.
Git Kurulum macOS
Terminalinizi açın ve git --version
yazın. Eğer git kurulu ise git verison 2.21.0 (Apple Git-122.2)
gibi bir uyarı alırsınız. Aksi halde gelen adımları takip ederek yeniden kurnamız gerekecek.
Git Kurulum Windows
Git programı indirildikten sonra kurulum aşamasında Use Git from Git bash only seçilir. Diğerleri next next.

Git Seçenekleri
Git kurulumu bittikten sonra, bilgisayarda arama yaptığımızda birden fazla git seçeneği gelecektir. Bunlar:
- Git GUI Görsel ara yüzü sunar
- Git Bash Metin tabanlı ara yüz sunar.(Bunu kullanacağız)
- Git CMD Metin tabanlı, Bash'den farklı syntax
Başlangıç
Şimdi Bash seçeneğini seçelim, bir komut penceresi gelecek, burada kullanıcı adı ve email bilgilerimizi gireceğiz.
git config --global user.name "Your Name"
git config --global user.email "youremail@gmail.com"
Şimdi emin olmak için kullanıcı adımızı ve mail adresimizi çağıralım.
git config --global user.name
git config --global user.email
cevaplar doğru geldiyse sorun yok demektir.
Bazı Temel Komutlar
İlk git projesi için Bash terminalini açalım, bazı temel komutları deneyelim:
pwd
bulunduğunuz dizini verirls
listelemecd
change directory, başka dizine geçmecd..
bir önceki dizine geçerclear
ekranı temizlerctrl+L
ekranı temizlemenin kısayolu
İlk Proje Klasörü
Şimdi masaüstünde git için bir proje klasörü oluşturalım, adı ilk_git_projem olsun. Bu klasör içine index.html adında bir dosya oluşturalım ve içine basit HTML kodları yazabiliriz.
<!DOCTYPE html>
<html>
<head>
<title>İlk Git projem</title>
</head>
<body>
<h1>İlk Git projem</h1>
<p>Sabırsızlanıyorum, artık başlayalım.</p>
</body>
</html>
Öncelikle, proje klasörümüz masaüstünde olduğu için, komut kullanarak masaüstüne geçelim:
cd desktop
ilk_git_projem klasörü içine komut kullanarak girelim,
cd ilk_git_projem
ilk_git_projem adındaki klasörün içine girmiş olduk, şimdi klasör içinde ne var ne yok listeleyelim:
ls
Klasör içinde az önce oluşturduğumuz index.html dosyası olduğu için sadece 1 tane dosyanın adının gelmesi gerekiyor. Klasör içinde ne var ne yok baktıktan sonra diğer adıma geçelim.
Git projesine çevirme
ilk_git_projem adındaki klasörü git projesi yapmalıyız, artık bu klasör bir uzaylı kimliği kazanacak. Proje klasörümüz içinde olduğumuzdan eminsek aşağıdaki komut satırını kullanarak projenizi git projesine çevirebilirsiniz.
git init
Cevap olarak aşağıdaki ifadeyi göreceğiz.
Initialized empty Git repository in C:/Users/Kullanici_adi/Desktop/ilk_git_projem/.git
Evet klasörün içinde soluk renkte .git adında bir klasör oluşmuş olmalı. Eğer göremiyorsanız "Gizli dosya, klasör ve sürücüleri göster" ayarlarını aktif etmelisiniz. .git uzantılı dosyayı bizim depomuz olarak düşünebilirsiniz.
Ya da gizli dosyaları listelemek için aşağıdaki komutu kullanabiliriz.
ls -a
Git Sistemi Nasıl İşliyor?
Çalıştığımız dizindeki dosyaları hemen git reposuna atmak isteyebiliriz ancak sistem böyle işlemiyor. Dosyalarınız öncelikle stage denilen ara bir dizine(geçiş bölgesine) geliyor. Aslında dosyalar 3 dizine ayrılıyor:
- Working Directory(Çalışma dizini)
- Stage(Geçiş Bölgesi)
- Repository
Ancak sırasıyla bazı komutlar kullanarak dosyalarımızı repository'e gönderebiliriz. Aşağıda bunu anlatan bir görsel var.

Stage dizinine(Geçiş bölgesine) 1 tane dosya göndermek istersek aşağıdaki komutu kullanabiliriz:
git add file_name
Stage dizinine(Geçiş bölgesine) tüm dosyaları göndermek istersek aşağıdaki komutu kullanabiliriz:
git add .
//dizindeki tüm dosyaları stage ekranına atar
Şimdi Stage dizininden((Geçiş bölgesinden) Repository dizinine dosya gönderelim, beraberinde mesaj yazabiliriz:
git commit -m "buraya mesaj yazabilirsiniz."
Git tarafından projenin mevcut bir kopyası oluşturuldu, yukarıdaki komutu çalıştırınca şöyle bir cevap geldi:
[master (root-commit) bcbbb43] stage dizininden repository dizinine commit komutu ile dosyaları atıyorum
1 file changed, 12 insertions(+)
create mode 100644 index.html
Github Üyeliği ve Yeni Repository Oluşturmak
Git ve Github ayrı şeyler olduğu için şu anda henüz Github hesabınızda bu değişiklikler görünmeyecektir. Öncelikle Github'a üye olmanız gerekiyor. Daha sonra Sağ üstte (+) bulunan Create New Repository butonuna tıklayarak github üzerinde bir repository oluşturun.
Github'a Proje Gönderme(Yerel Bilgisayardan)
Github üzerinde hesabınız üzerinden repository oluşturduysanız url'si şöyle olmalıdır: https://github.com/your_name/repository_name
.
Daha sonra terminalden aşağıdaki gibi komutumuzu yazıyoruz, Bu komut ile öncelikle bağlantı kuruyoruz:
git remote add githubRepo your_repository_url
Bağlantımızın kurulup kurulmadığını test etmek için komut:
git remote
Gelen cevap githubRepo ise bağlantımız hazır demektir. Şimdi projeyi gönderebiliriz. Son komut:
git push -u githubRepo master
Github hesabınıza giriş yapmanız istenirse giriş yaparak kontrol edebilirsiniz. Artık Github üzerinde bir projeniz oldu.
Yukarıdaki kod içinde geçen -u
tüm dosyalar, master
master dalı demektir.
Diğer Komutlar
Projemizi gönderdik ama şimdi yeni bir komut deneyelim. Aldığım tüm versiyonları listelemek için:
git log
Projemizde yapılan değişiklikleri gösteren bir komut:
git status
Gelen cevaba bakalım:
On branch master
Your branch is up to date with 'githubRepo/master'.
nothing to commit, working tree clean
nothing to commit, working tree clean yani şu demek: hiçbir değişiklik yok, buradaki dizin ile daha önce commit ettiğin dizin aynı
Şimdi index.html dosyamızın içine girip bir değişiklik yapalım ve git status
komutunu tekrar yazalım:
$ git status
On branch master
Your branch is up to date with 'githubRepo/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Yukarıda ki uyarıda modified: index.html cümlesine bakarsak, index.html dosyasında değişiklik olduğunu anlayabiliyoruz. Fakat yine commit edilecek dosya yok diyor.
Peki değişiklik oldu ama de değiştirdik görmek istersek başka bir komut kullanmamız gerekecek:
git diff
Yapılan değişiklikleri görebiliriz:
$ git diff
diff --git a/index.html b/index.html
index d7e1608..8533d92 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
<body>
<h1>İlk Git projem</h1>
-<p>Sabırsızlanıyorum, artık başlayalım.</p>
+<p>İlk projemi commit ettim.</p>
</body>
</html>
\ No newline at end of file
Başında (+) işareti olanlar ve yeşil renkli kısım yapılan değişikliği göstermektedir.
Yukarıdaki git diff
komutu Working Area ve Stage Area arasındaki tüm değişiklikleri gösterdi fakat sadece stage ile repository arasındaki değişiklikleri görmek istersek. Aşağıdaki komutu kullanmamız gerekecek.
git diff --staged
Working Area da bir dosyada değişiklik yaptıktan sonra eğer Stage Area ya eklemediysek yaptığımız değişiklikleri geri alabiliriz.
git checkout file_name
Stage Area'ya gönderilmiş bir dosyayı tekrar Working Area'ya almak istersek :
git reset HEAD file_name
git add
komutunun tersidir.
Dosya adı değiştirme
git mv index.html home.html
Dosya Silmek
Dosya1 ve dosya2 isimli dosyalarımızı silek isteyelim:
git rm dosya1 dosya2
Uzak Sunucudan Kopya Almak
git clone https://github.com/tensorflow/models.git
Git clone işlemini hızlandırmak için kullanabileceğiniz bir trick --depth
parametresi, bu yöntem "shallow clone" diye geçer. Git clone, tüm proje geçişimini indirir ve büyük projede bu işlem uzun sürer. Fakat depth parametresi ile sadece en güncel versiyonu indirebilirsiniz.
git clone https://github.com/tensorflow/models.git --depth=1
Git Workflow

Git Nasıl Çalışır?

Git Cheat Sheet
