Git Clone Komutu: Depo Kopyalama ve Temel Seçenekleri

git clone, mevcut bir Git deposunu yerel makinenize kopyalamak için kullanılır. Bu rehber, HTTPS ve SSH protokolleri ile temel ve gelişmiş klonlama seçeneklerini detaylandırır.

L
Linuxize
16 görüntülenme
Git Clone Komutu: Depo Kopyalama ve Temel Seçenekleri

Git Clone Komutu: Depo Kopyalama ve Temel Seçenekleri

git clone komutu, mevcut bir Git deposunun tam bir kopyasını yerel makinenizde yeni bir dizine oluşturur. Bu işlem, uzaktaki (remote) her dal için izleme dalları (tracking branches) kurar ve kaynak depoya işaret eden origin adında bir uzaktan bağlantı (remote) oluşturur.

Bu makale, git clone komutunun en yaygın seçeneklerini ve protokollerini nasıl kullanacağınızı açıklamaktadır.

Temel Sözdizimi

git clone komutunun temel sözdizimi aşağıdaki gibidir:

git clone [SEÇENEKLER] REPOSITORY [DIZIN]
  • REPOSITORY: Kopyalanacak deponun URL'si veya yerel yolu.
  • DIZIN (İsteğe bağlı): Klonun oluşturulacağı hedef dizin. Belirtilmezse, Git depo adını kullanır.

Uzaktan Bir Depoyu Kopyalama (HTTPS ve SSH)

En yaygın klonlama yöntemi HTTPS üzerinden yapılır. Bu, genellikle kimlik doğrulama gerektirir (kullanıcı adı/şifre veya kişisel erişim belirteci).

$ git clone https://github.com/kullanici/repo.git

Bu komut, mevcut çalışma dizininde repo adında bir dizin oluşturur, içine .git dizinini kurar ve varsayılan dalı (genellikle main) otomatik olarak indirip kontrol eder.

Eğer SSH anahtarlarınız yapılandırılmışsa, SSH üzerinden klonlama tercih edilir çünkü bu, kimlik bilgisi girme zorunluluğunu ortadan kaldırır:

$ git clone git@github.com:kullanici/repo.git

Belirli Bir Dizin İçine Klonlama

Deponun adıyla aynı isimde bir dizin oluşturulmasını istemiyorsanız, hedef yolu ikinci argüman olarak belirtebilirsiniz:

$ git clone https://github.com/kullanici/repo.git benim-yeni-projem

Klonlama işlemini mevcut dizinin içine yapmak için (dizinin boş olması koşuluyla) nokta . kullanılır:

$ git clone https://github.com/kullanici/repo.git .

UYARI: Mevcut dizine klonlama (. kullanılarak) yalnızca o dizin tamamen boşsa başarılı olur. Aksi takdirde Git hata verecektir.

Belirli Bir Dalı Klonlama

Varsayılan olarak, git clone ana dalı indirir. Farklı bir dalı (örneğin develop) indirip kontrol etmek için -b seçeneği kullanılır:

$ git clone -b develop https://github.com/kullanici/repo.git

Bu işlem tüm geçmişi indirir, ancak başlangıçta develop dalında çalışmaya başlarsınız. Eğer indirme boyutunu azaltmak ve yalnızca o dalın geçmişini almak istiyorsanız, --single-branch seçeneğini ekleyin:

$ git clone -b develop --single-branch https://github.com/kullanici/repo.git

Sığ Klonlama (Shallow Clone)

Çok büyük depolarda, tüm geçmişi indirmek yerine yalnızca belirli sayıda son commit'i indirmek zaman kazandırır. Buna sığ klonlama denir ve CI/CD ortamlarında yaygındır. Yalnızca en son commit'i indirmek için --depth 1 kullanılır:

$ git clone --depth 1 https://github.com/kullanici/repo.git

Sığ klonlamayı daha sonra tam klonlamaya dönüştürmek için:

$ git fetch --unshallow

Yerel Depo Kopyalama

git clone yerel dosya yollarıyla da çalışır. Bu, test veya izolasyon amaçlı bir kopyasını oluşturmak için kullanışlıdır:

$ git clone /yerel/yol/mevcut/repo yeni-kopya

Sıkça Sorulan Sorular (SSS)

  • HTTPS ve SSH Arasındaki Fark Nedir? HTTPS kimlik doğrulaması gerektirir (token veya şifre), SSH ise yapılandırılmış anahtarlar kullanır ve genellikle daha sorunsuzdur.
  • Tüm Dalları İndirir mi? Evet, git clone tüm dalların referanslarını indirir ancak varsayılan dalı kontrol eder. Diğer dallara geçmek için git checkout kullanılır.

Hızlı Başvuru Tablosu

Komut Açıklama
git clone URL Depoyu kopyala (varsayılan ayarlar)
git clone -b dal_adi URL Belirli bir dalı kontrol et
git clone --depth 5 URL Son 5 commit'i sığ klonla

Çözüm (Troubleshooting)

Kimlik Doğrulama Hatası (HTTPS): Çoğu servis artık şifre yerine Kişisel Erişim Belirteçleri (PAT) gerektirir. Kimlik yöneticisi kullanın veya PAT ile giriş yapın.

İzin Reddedildi (publickey) (SSH): SSH anahtarınızın doğru yapılandırıldığından, SSH ajanı tarafından yüklendiğinden ve hosting servisine eklendiğinden emin olun.

Kaynak

Linuxize