Bir proje klasöründe aynı dosyanın farklı düzenlemeleri yan yana dururken hangi hâlin son kayıt olduğunu bulmak zorlaşabilir. Sürüm kontrolü, dosyalardaki değişiklikleri zaman içinde kaydederek önceki sürümlere dönme ve farklı kişilerle birlikte çalışma olanağı sağlar. Bu yaklaşım, bir dosyanın yalnızca mevcut görünümüne değil, değişiklik geçmişine de bakmayı mümkün kılar.
Git deposunda dosyadan geçmişe
- Depo var mı? git init mevcut klasörde boş bir depo oluşturur; ilk commit için dosyalar ayrıca hazırlanıp kaydedilir.
- Dosya izleniyor mu? Git’in henüz izlemediği dosyalar commit geçmişinde yer almaz.
- Değişiklik hangi durumda? git status, çalışma ağacı ile hazırlama alanı ve son commit arasındaki farkları, ayrıca izlenmeyen dosyaları gösterir.
Bir deponun klonu, dosyaların yanı sıra proje geçmişini de yerel kopyaya taşır. git status çalışma klasörü ile son commit arasındaki değişiklikleri ve hazırlama alanında bekleyen içerikleri ayrı ayrı gösterir; böylece dosyanın izlenip izlenmediği ve hangi aşamada olduğu görülebilir.
Commit’e girecek içeriğin hazırlanması
Dosyanın çalışma klasöründe düzenlenmesi tek başına yeni bir commit oluşturmaz. git add, dosyanın komut çalıştırıldığı andaki içeriğini hazırlama alanına alır; ardından dosyada yeni değişiklik yapılırsa bu içerik için git add yeniden çalıştırılır. git commit, hazırlanan içeriklerden bir anlık görüntü oluşturup mevcut dalın ucuna yeni bir kayıt ekler.
git diff henüz hazırlanmadı olan değişiklikleri, git diff --staged ise bir sonraki commit’e girecek hazırlanmış içeriği gösterir. Tek dosyadaki değişikliklerin yalnız seçili parçalarını kaydetmek için git add -p kullanılır; komut parçaları tek tek seçmeye imkân verir.
Dal açmak ve değişiklikleri birleştirmek
Yeni bir özellik üzerinde çalışırken ana geliştirme çizgisinden ayrılan bir dal kullanılabilir. İş tamamlandığında git merge, başka bir daldaki değişiklikleri mevcut dala entegre eder; aynı dosyanın çakışan kısımları karar gerektirebilir.
İki dalın ortak atası varsa ve mevcut dal diğerinin atasıysa işaretçi ileri taşınarak birleştirme yapılabilir. main ve master adları özel bir dal türü belirtmez; ikisi de commit’lere işaret eden dal adlarıdır.

Uzak depo komutlarının işlevi
Uzak depo, ekip üyelerinin erişebildiği proje kopyasıdır. git clone depoyu yeni klasöre kopyalar ve origin adlı uzak depo ayarını kurar. Ekip çalışmasında uzak masaüstüne bağlanma gibi ayrı bir ihtiyaç da doğabilir; bu kullanım için AnyDesk Nedir Nasıl Kullanılır? yazısına bakılabilir.
| Komut | İşlem | Mevcut dala etkisi |
|---|---|---|
| git fetch | Uzak commit ve referansları indirir | Tek başına entegre etmez |
| git pull | Uzak değişikliği alır | Mevcut dala entegre eder |
| git push | Yerel commit’leri gönderir | Uzak depoda paylaşır |
git pull işlemi ayrı adımlarla yürütüldüğünde önce git fetch ile uzak referanslar alınır, ardından git merge ile seçilen dal mevcut dala katılır. Bu ayrım, indirilen değişiklikleri birleştirme kararını ayrı vermek isteyenler için kullanışlıdır.
Bir kayıt zincirini okurken
Uzak izleme dalı, uzak depodaki bir dalın yerel görünümüdür; pull request ise bir daldaki değişiklikleri başka bir dala birleştirme önerisini gözden geçirmeye açar. Tasarım dosyalarının sürüm geçmişiyle ilişkisini incelemek için tasarım projelerindeki dosya değişiklikleri sayfası da ilgili bir kaynaktır.
Çalışma klasöründeki henüz kaydedilmemiş düzenlemeleri ayırt etmek için git status çıktısına bakılır. Kayıtlı adımlar arasında belirli bir değişikliği ararken git log listesindeki commit’ler incelenir; liste varsayılan olarak en yeni kayıttan başlar.