Sıradan bir klasörü git versiyonlama sistemine dahil etmek git init yazmak kadar kolaydır. Bu komut sıradan bir klasörü bir saniye içinde git deposuna (repository) dönüştürür.

Git'i başlatmak terminalde ilgili klasördeyken "git init" yazmak kadar kolaydır. Takibe başlar ve varsayılan bir dal oluşturur.

Arkaplanda aslında ne oluyor?

Git init (İngilizce initialize kelimesinin kısaltmasıdır) yazdığımızda ilgili klasöre .git adında gizli bir klasör oluşturur. Projemizin geçmişi artık bu klasördedir. Hatta sadece geçmişi değil dallar (branch), ayarlar, kim ne zaman hangi kodu yazdı bilgisi de bu klasörde (.git) saklanır.

.git klasörünü versiyonlama sisteminin veritabanı olarak düşünebiliriz. Git takibini kaldırmak istersek bu klasörü silmemiz yeterli ancak bu dosyaları elle (komutlar dışında) değiştirilmesi önerilmez.

terminal
# proje klasörüne gidin
cd benim-yeni-projem

# git deposunu -b parametresiyle başlat
git init -b main

# çıktı
Initialized empty Git repository in /path/to/benim-yeni-projem/.git/

Git Init komutu hakkında bazı altın kurallar

  • git init yazabilmemiz için illa boş bir klasör şart değildir. Yıllardır üzerinde çalıştığınız projenizi bile git init ile versiyonlama altına alabilirsiniz. Merak etmeyin dosya kaybı olmaz, o anki hali ile takibe başlar.
  • git clone ile karıştırılmamalıdır. Eğer github/gitlab gibi bir servisten kendi bilgisayarımıza repo indiriyorsak git init yapılmamalıdır çünkü bulunduğu yerde zaten başlatılmıştır (git init ile .git klasörü oluşturulmuş).
  • Bu kod sizi doğrudan github.com'a bağlamaz. Karıştırılan bir husus da git init yazınca internete (github/gitlab gibi servislere) yüklendiğinin sanılmasıdır. git init internete bile ihtiyaç duymaz tamamen local (kendi bilgisayarımızda) çalışır.
  • Eğer yanlış klasöre git init yaptıksak oluşan o klasörü (.git) silmemiz yeterlidir. Kodlar ve proje hasar görmez. Eğer halihazırda bir git reposuna kayıt atacak olursak bile endişelenmemize gerek yok. "Reinitialized existing git repository" (mevcut depo yeniden başlatıldı) der ve arka planda bir kaç ayarlama yapar ama çalışmanızı bozmaz.
  • Yanlışlıkla iç içe git init yapmayın: Özellikle yeni öğrenenler ana klasörde bir defa git init yaptıktan sonra gidip alt klasörlerde de örneğin (src klasörü) tekrar başlatma komutunu girebiliyorlar. Ana repo içinde takibi yapılamayan (untracked) gizli bir repo oluşur.

Git init parametreleri nelerdir?

Normalde git init yazıp geçebilirsiniz ama işinizi kolaylaştıracaksa parametreleri kullanmak faydalıdır.

git init Bu en yalın kullanımdır. Bulunan klasörde bir git reposu oluşturur. Varsayılan dal adı, özel bir ayar yoksa "master" olur. Git 2.28 ile gelen init.defaultBranch ayarıyla bu isim değiştirilebilir. Eğer Git sürümümüz eskiyse sırayla git init ve git branch -M main olarak çalıştırabiliriz.
git init -b Repository'yi başlatırken default branch yerine bizim belirlediğimiz adı verir. Github/Gitlab gibi platformlar main olarak kullandığından günümüzde -b main ile başlatmak yaygın tercih hâline geldi.
git init benim-projem Hem klasörü oluşturur hem de projeyi başlatır (mkdir + cd + git init komutlarını ardarda çalıştırmış gibi).
git init --bare Çalışma dizini olmayan, sadece geçmişi saklayan depo tipidir; genellikle sunucularda kullanılır. GitHub/GitLab dökümanlarında, sunucu kurulum rehberlerinde sık görünür. Günlük rutinin bir parçası değildir.
git init --template .git/ klasörüne önceden hazırlanmış dosyaları (hook şablonları, varsayılan config vb.) kopyalar. Ekip içinde standart bir git yapılandırması paylaşmak isteyenler için kullanışlıdır. Havalı bir Git özelliğidir.

Sonraki adım: projenizi git ile tanıştırdınız. Şimdi Git'e hangi komutu vermek istiyorsunuz? Git'e dosya ekleme git add veya git durum kontrolü için kullanılan git status sayfamıza bakabilirsiniz.