## Git ve GitHub'da "repo" (Repository) Kavramı
"Repo", kelime anlamı olarak "depo" anlamına gelir ve yazılım geliştirme bağlamında genellikle bir **projenin tüm dosyalarını, geçmişini (commit geçmişi), ve diğer ilgili kaynaklarını içeren merkezi bir depolama alanını** ifade eder. Bir "repo", yerel bilgisayarınızda veya uzakta, örneğin [GitHub](https://www.nedemek.page/kavramlar/GitHub), [GitLab](https://www.nedemek.page/kavramlar/GitLab) veya [Bitbucket](https://www.nedemek.page/kavramlar/Bitbucket) gibi bir platformda barındırılabilir.
Temel olarak, bir "repo" aşağıdaki unsurları içerir:
* **Proje Dosyaları:** Kaynak kodu dosyaları, resimler, belgeler, yapılandırma dosyaları ve diğer tüm proje ile ilgili dosyalar.
* **Versiyon Kontrol Geçmişi:** Projede yapılan tüm değişikliklerin, kimin ne zaman değiştirdiğinin, ve bu değişikliklerin neden yapıldığının kayıtlarını tutan [commit](https://www.nedemek.page/kavramlar/commit) geçmişi. Bu, [Git](https://www.nedemek.page/kavramlar/Git)'in temel işlevselliğidir.
* **Dallar (Branches):** Proje üzerinde farklı özellikler geliştirmek veya hataları düzeltmek için kullanılan [dallar](https://www.nedemek.page/kavramlar/branch). Dallar, projenin ana hattından (genellikle "main" veya "master" dalı) ayrılır ve geliştirme tamamlandığında tekrar birleştirilebilir.
* **Meta Veri:** Proje ile ilgili çeşitli bilgileri (örneğin, proje tanımı, lisans bilgisi, katkıda bulunma kılavuzu) içeren dosyalar.
**Repo'nun Faydaları:**
* **Versiyon Kontrolü:** Projenin farklı versiyonlarını takip etme ve gerektiğinde eski versiyonlara geri dönme imkanı sağlar.
* **İşbirliği:** Birden fazla geliştiricinin aynı proje üzerinde eş zamanlı olarak çalışmasına olanak tanır.
* **Yedekleme:** Proje dosyalarının güvenli bir şekilde saklanmasını ve yedeklenmesini sağlar.
* **Takip Edilebilirlik:** Projede yapılan tüm değişikliklerin kim tarafından, ne zaman ve neden yapıldığını takip etme imkanı sunar.
* **Açık Kaynak Katkısı:** Projelerin açık kaynak olarak paylaşılması ve diğer geliştiricilerin katkıda bulunmasına olanak tanır.
**Repo Oluşturma ve Yönetimi:**
"Repo"lar genellikle Git komut satırı aracı veya GitHub, GitLab gibi platformların web arayüzleri aracılığıyla oluşturulur ve yönetilir. Temel "repo" işlemleri şunları içerir:
* **Oluşturma (Initialization):** Yeni bir "repo" başlatma.
* **Klonlama (Cloning):** Mevcut bir "repo"nun yerel bir kopyasını oluşturma.
* **Commit:** Yapılan değişiklikleri kaydetme.
* **Push:** Yerel değişiklikleri uzak "repo"ya gönderme.
* **Pull:** Uzak "repo"daki değişiklikleri yerel "repo"ya çekme.
* **Branch:** Yeni bir dal oluşturma.
* **Merge:** Dallar arasındaki değişiklikleri birleştirme.