# Git ve HTTP paradigması

`huggingface_hub` kütüphanesi, git tabanlı depolardan (modeller, veri kümeleri veya Spaces) oluşan Hugging Face Hub ile etkileşim kurmak için kullanılan bir kütüphanedir. `huggingface_hub` ile Hub'a erişmenin iki ana yolu vardır.

İlk yaklaşım, yani "git tabanlı" yaklaşım, bir terminalde standart `git` komutlarını doğrudan kullanmaya dayanır. Bu yöntemle depoları klonlayabilir, commit oluşturabilir ve değişiklikleri manuel olarak itebilirsiniz. İkinci seçenek olan "HTTP tabanlı" yaklaşım ise [HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi) istemcisi kullanılarak HTTP istekleri göndermeyi içerir. Her iki yaklaşımın da artı ve eksilerini inceleyelim.

## Git: Tarihsel CLI tabanlı yaklaşım

Başlangıçta, çoğu kullanıcı Hugging Face Hub ile `git` komutları aracılığıyla etkileşim kuruyordu; örneğin `git clone`, `git add`, `git commit`, `git push`, `git tag` veya `git checkout`.

Bu yaklaşım, geleneksel yazılım geliştirmede olduğu gibi, makinenizde depoyun tam bir yerel kopyasıyla çalışmanızı sağlar. Çevrimdışı erişime ihtiyacınız olduğunda veya bir depoyun tam geçmişini kullanmak istediğinizde bu bir avantaj olabilir. Ancak bunun da dezavantajları vardır: depoyu yerel olarak güncel tutmak, kimlik bilgilerini yönetmek ve büyük dosyaları (`git-lfs` aracılığıyla) yönetmek sizin sorumluluğunuzdadır; bu durum, büyük makine öğrenme modelleri veya veri kümeleriyle çalışırken zahmetli hale gelebilir.

Birçok makine öğrenmesi iş akışında, çıkarım için yalnızca birkaç dosya indirmeniz veya ağırlıkları dönüştürmeniz gerekebilir; bunun için tüm depoyu klonlamanıza gerek yoktur. Bu tür durumlarda `git` kullanmak gereksiz yere karmaşıklık yaratabilir.

## HfApi: esnek ve kullanışlı bir HTTP istemcisi

[HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi) sınıfı, büyük modeller veya veri setleriyle çalışırken bakımının zahmetli olabileceği yerel git depolarının kullanımına bir alternatif sağlamak üzere geliştirilmiştir. [HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi) sınıfı, dosya indirme ve gönderme, dal ve etiket oluşturma gibi git tabanlı iş akışlarıyla aynı işlevselliği sunar; ancak senkronize tutulması gereken bir yerel klasör gerektirmez.

`git` tarafından zaten sağlanan işlevlerin yanı sıra [HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi) sınıfı; depoları yönetme, verimli yeniden kullanım için önbellekleme kullanarak dosya indirme, Hub'da depoları ve meta verileri arama, tartışmalar, PR'lar ve yorumlar gibi topluluk özelliklerine erişme ve Spaces donanımı ile gizli bilgileri yapılandırma gibi ek özellikler sunar.

## Hangisini kullanmalıyım? Ne zaman?

Genel olarak, `huggingface_hub` kütüphanesinin tüm durumlarda kullanılması önerilen yöntem **HTTP tabanlı yaklaşımdır**. [HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi) ile değişiklikleri çekip itebilir, PR'ler, etiketler ve dallarla çalışabilir, tartışmalarla etkileşime girebilir ve daha fazlasını yapabilirsiniz.

Ancak, tüm git komutları [HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi) üzerinden kullanılamaz. Bazıları asla uygulanmayabilir, ancak sürekli olarak iyileştirmeler yapıp bu farkı kapatmaya çalışıyoruz. Kullanım senaryonuzun kapsamda olmadığını görüyorsanız, lütfen [GitHub'da bir sorun açın](https://github.com/huggingface/huggingface_hub)! Kullanıcılarımızla ve kullanıcılarımız için HF ekosistemini inşa etmemize yardımcı olacak geri bildirimlere her zaman açığız.

HTTP tabanlı [HfApi](/docs/huggingface_hub/v2.4.0/tr/package_reference/hf_api#huggingface_hub.HfApi)'nin doğrudan `git` komutlarına tercih edilmesinin, git sürümleme özelliğinin Hugging Face Hub'dan yakın zamanda kaldırılacağı anlamına gelmediğini belirtmek gerekir. Mantıklı olduğu iş akışlarında `git`'in yerel olarak kullanılmasına her zaman olanak tanınacaktır.

