Sözdizimi
git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc] \
[--advertise-refs] <dizin>
Açıklama
git fetch-pack tarafından çağrılır, karşı tarafın hangi nesneleri eksik olduğunu öğrenir ve bunları paketledikten sonra gönderir.
Bu komut genellikle son kullanıcı tarafından doğrudan çağrılmaz. Protokolün kullanıcı arayüzü git fetch-pack tarafındadır ve bu program çifti, uzak bir depodan güncellemeleri çekmek (pull) için kullanılmak üzere tasarlanmıştır. İtme (push) işlemleri için git send-pack kılavuzuna bakın.
Seçenekler
--[no-]strict
Eğer <dizin> bir Git dizini değilse, <dizin>/.git/ yolunu denemeyin.
--timeout=<n> saniye boyunca hareketsiz kalındığında aktarımı yarıda keser.
--stateless-rpc Standart girdi (stdin) ve standart çıktı (stdout) ile yalnızca tek bir okuma-yazma döngüsü gerçekleştirir. Bu, bir programın isteği okuyup bir yanıt yazdıktan sonra çıkış yapması gereken HTTP POST istek işleme modeline uygundur.
--http-backend-info-refs git-http-backend(1) tarafından $GIT_URL/info/refs?service=git-upload-pack isteklerine hizmet vermek için kullanılır. gitprotocol-http(5) kılavuzundaki "Smart Clients" ve gitprotocol-v2(5) belgelendirmesindeki "HTTP Transport" bölümlerine bakın. Ayrıca git-receive-pack(1) tarafından da anlaşılır.
Çevre Değişkenleri
GIT_PROTOCOL Kablo protokolünün (wire protocol) el sıkışması (handshaking) için kullanılan dahili değişken. Sunucu yöneticilerinin, bu değişkenin geçirilmesine izin vermek için bazı taşıma protokollerini yapılandırması gerekebilir. git(1) kılavuzundaki tartışmaya bakın.
GIT_NO_LAZY_FETCH Kısmi bir depodan (yani kendisi de --filter ile klonlanmış bir depodan) klonlama veya çekme (fetch) yaparken, sunucu tarafındaki upload-pack isteği tamamlamak için kendi üst kaynağından (upstream) ekstra nesneler çekmek zorunda kalabilir. Varsayılan olarak upload-pack böyle bir tembel çekme (lazy fetch) işlemini gerçekleştirmeyi reddeder; çünkü git fetch, kaynak deponun yapılandırma ve kancalarında (hooks) belirtilen rastgele komutları çalıştırabilir (ve upload-pack, güvenilmeyen .git dizinlerinde bile çalıştırılmasının güvenli olması için çabalar).
Bu durum, upload-pack'in dahili olarak GIT_NO_LAZY_FETCH değişkenini 1 yapmasıyla uygulanır. Bunu geçersiz kılmak istiyorsanız (kısmi bir kopyadan çekim yaptığınız ve buna kesinlikle güvendiğiniz için), GIT_NO_LAZY_FETCH değerini açıkça 0 olarak ayarlayabilirsiniz.
Güvenlik
Çoğu Git komutu güvenilmeyen bir .git dizininde çalıştırılmamalıdır (git(1) içindeki SECURITY bölümüne bakın). upload-pack, hizmet verdiği depodan gelebilecek tehlikeli yapılandırma seçeneklerinden veya kancalardan kaçınmaya çalışır; bu da güvenilmeyen bir dizini klonlamayı ve elde edilen kopya (clone) üzerinde komutlar çalıştırmayı güvenli hale getirir.
Ek bir güvenlik düzeyi için, upload-pack'i farklı bir kullanıcı olarak çalıştırabilirsiniz. Ayrıntılar platforma bağlı olacaktır, ancak many sistemlerde şunu çalıştırabilirsiniz:
git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...
Ayrıca Bakınız
gitnamespaces(7)
Git
git(1) paketinin bir parçasıdır
Git 2.50.1.428.g0e8243 2025-07-22 GIT-UPLOAD-PACK(1)