Sürüm Kontrol Sistemleri (Git) Nedir?
Yazılım geliştirme projelerinde, kodun zaman içindeki değişimlerini takip etmek, farklı sürümleri yönetmek ve birden fazla geliştiricinin aynı proje üzerinde eş zamanlı çalışmasını sağlamak için sürüm kontrol sistemleri (VCS) kullanılır. Git, bu alanda en popüler ve yaygın olarak kullanılan dağıtık bir sürüm kontrol sistemidir.
Sürüm Kontrol Sistemleri (Git), yazılım projelerindeki kod değişikliklerini kaydeden ve geçmiş sürümlere kolayca dönülmesini sağlayan bir sistemdir. Git, dağıtık yapısı sayesinde geliştiricilerin çevrimdışı çalışmasına ve değişiklikleri senkronize etmesine olanak tanır.
Adım adım çözümlü örnekler
Git ile bir projeye yeni başlayan bir geliştirici hangi temel adımları izlemelidir?
1. **Git Kurulumu:** Bilgisayarınıza Git'i kurun. 2. **Depo Oluşturma/Klonlama:** Yeni bir proje için `git init` ile depo başlatın veya mevcut bir depoyu `git clone <url>` ile klonlayın. 3. **Dosya Ekleme:** Değişiklikleri takip etmek istediğiniz dosyaları `git add <dosya_adı>` ile hazırlık alanına ekleyin. 4. **Değişiklikleri Kaydetme:** Hazırlanan değişiklikleri `git commit -m "Mesajınız"` ile yerel depoya kaydedin. 5. **Uzak Depo ile Senkronizasyon:** Değişiklikleri uzak depoya (`git push`) göndermeden veya oradan çekmeden (`git pull`) önce yerel değişikliklerinizi gözden geçirin.
Farklı geliştiricilerin aynı projede çalışırken Git ile çakışmaları (conflict) nasıl yönetebilir?
1. **Güncel Depoyu Çekme:** Çalışmaya başlamadan önce uzak depodaki en son değişiklikleri `git pull` komutu ile yerel deponuza çekin. 2. **Çakışma Durumu:** Eğer sizin yaptığınız değişiklikler ile çektiğiniz değişiklikler aynı dosyanın aynı satırlarında ise Git otomatik olarak birleştirme işlemini durdurur ve çakışma (conflict) olduğunu belirtir. 3. **Çakışmaları Çözme:** Çakışan dosyaları açın. Git, çakışan kısımları özel işaretlerle (`<<<<<<<`, `=======`, `>>>>>>>`) belirtir. Bu işaretleri silerek ve kodunuzu istediğiniz gibi düzenleyerek çakışmayı manuel olarak çözün. 4. **Çözülen Dosyaları Ekleme ve Commit:** Çakışmayı çözdüğünüz dosyaları `git add <dosya_adı>` ile hazırlık alanına ekleyin ve ardından `git commit` komutu ile birleştirme işlemini tamamlayın.
Bir geliştirici, yaptığı son commit'i geri almak isterse ne yapmalıdır?
1. **Yerel Commit'i Geri Alma:** Eğer commit henüz uzak depoya gönderilmediyse, `git reset --hard HEAD~1` komutu ile son commit'i geri alabilirsiniz. Bu komut, son commit'i hem commit geçmişinden siler hem de yapılan değişiklikleri çalışma dizininden kaldırır. 2. **Sadece Commit Mesajını Değiştirme:** Eğer commit'i geri almak yerine sadece commit mesajını değiştirmek istiyorsanız `git commit --amend` komutunu kullanabilirsiniz. 3. **Uzak Depoya Gönderilmiş Commit'i Geri Alma (Dikkatli Olun!):** Eğer commit uzak depoya gönderilmişse, `git revert HEAD` komutu ile geri almak istediğiniz commit'in tam tersini yapan yeni bir commit oluşturabilirsiniz. Bu, geçmişi değiştirmek yerine yeni bir değişiklik ekleyerek güvenli bir geri alma yöntemidir. `git push` ile bu değişikliği uzak depoya göndermeniz gerekir.
Bilgi kartları
Mini test
S1.Aşağıdakilerden hangisi Git'in temel amacıdır?
S2.Bir geliştirici, uzak depodaki en son değişiklikleri yerel deposuna çekmek için hangi komutu kullanır?
S3.`git commit -m "Mesajınız"` komutu ne yapar?
Sık yapılan hatalar
Git sadece tek bir kullanıcı tarafından kullanılabilen bir sistemdir. — Doğrusu: Git dağıtık bir sistemdir ve birden fazla geliştiricinin aynı proje üzerinde eş zamanlı olarak çalışmasına olanak tanır.
`git pull` komutu sadece dosyaları indirir, birleştirme yapmaz. — Doğrusu: `git pull` komutu, uzak depodaki değişiklikleri hem indirir hem de yerel çalışma dalı ile otomatik olarak birleştirmeye çalışır.
Commit'ler geri alınamaz, yapılan her değişiklik kalıcıdır. — Doğrusu: Git'te `git reset` veya `git revert` gibi komutlarla commit'leri geri almak veya değişiklikleri iptal etmek mümkündür (ancak uzak depoya gönderilmiş commit'leri geri alırken dikkatli olunmalıdır).
Sıkça sorulan sorular
Git'in merkezi sürüm kontrol sistemlerinden farkı nedir?
Git dağıtık bir sistemdir, yani her geliştiricinin yerel bilgisayarında projenin tam bir kopyası bulunur. Bu, çevrimdışı çalışmayı, daha hızlı işlem yapmayı ve merkezi bir sunucu kesintisi durumunda bile projeye erişimi mümkün kılar. Merkezi sistemlerde ise tüm kodlar tek bir sunucuda tutulur.
Branch (dal) nedir ve neden kullanılır?
Branch, projenin ana kod tabanından (genellikle `main` veya `master` dalı) ayrı olarak geliştirme yapmanızı sağlayan bir çalışma hattıdır. Farklı özellikler geliştirmek, hataları ayıklamak veya denemeler yapmak için kullanılır. Ana projeyi etkilemeden bağımsız olarak çalışmayı sağlar ve daha sonra ana dala birleştirilebilir (merge).
Merge (birleştirme) işlemi nedir?
Merge işlemi, bir branch'te yapılan değişikliklerin başka bir branch'e (genellikle ana dala) aktarılmasıdır. Bu, farklı geliştiricilerin yaptığı çalışmaları tek bir yerde toplamak ve projenin güncel tutulmasını sağlamak için kullanılır.