Bir Git deposunu belirli bir klasöre nasıl klonlarsınız?

git clone git@github.com:whatever` komutunu çalıştırdığımda mevcut klasörümde bilmem ne adında bir dizin oluşturuyor ve Git deposunun içeriğini bu klasöre atıyor:

/httpdocs/whatever/public

Benim sorunum, Git deposunun içeriğinin web sunucusu için uygun konumda görünmesi için mevcut dizinime klonlanmasına ihtiyacım olması:

/httpdocs/public

Depoyu klonladıktan sonra dosyaları nasıl taşıyacağımı biliyorum, ancak bu Git'i bozuyor gibi görünüyor ve sadece git pull çağırarak güncelleme yapabilmek istiyorum. Bunu nasıl yapabilirim?

Çözüm

Seçenek A:

git clone git@github.com:whatever folder-name

Ergo, "tam burada" kullanım için:

git clone git@github.com:whatever .

Seçenek B:

.gitklasörünü de taşıyın. .git klasörünün çoğu grafik dosya gezgininde gizli olduğunu unutmayın, bu nedenle gizli dosyaları gösterdiğinizden emin olun.

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

İlk satır tüm normal dosyaları, ikinci satır ise nokta dosyalarını alır. Dotglob'u etkinleştirerek (yani shopt -s dotglob) bunu tek satırda yapmak da mümkündür, ancak bu cevabın yanıtladığı soruyu soruyorsanız, bu muhtemelen kötü bir çözümdür.

Daha da iyisi:

Çalışma kopyanızı başka bir yerde saklayın ve sembolik bir bağlantı oluşturun. Bunun gibi:

ln -s /where/it/is/right/now /the/path/I/want/to/use

Sizin durumunuz için bu şöyle bir şey olabilir:

ln -sfn /opt/projectA/prod/public /httpdocs/public

İstenirse test olarak kolayca değiştirilebilir, örn:

ln -sfn /opt/projectA/test/public /httpdocs/public

dosyaları hareket ettirmeden. Birinin bu satırları kopyalaması ihtimaline karşı -fn eklendi (-f zorlayıcıdır, -n ise mevcut ve mevcut olmayan bağlantılarla bazı istenmeyen etkileşimleri önler).

Sadece çalışmasını istiyorsanız A seçeneğini kullanın, yaptığınız şeye başka biri bakacaksa C seçeneğini kullanın.

Yorumlar (18)

Bu soruyu soran pek çok kişinin peşinde olduğunu düşündüğüm örnek şudur. Eğer git deposunun içeriğinin dökülmesini istediğiniz dizindeyseniz *çalıştırın:

git clone git@github.com:whatever .

Sonundaki "." geçerli klasörü çıkış klasörü olarak belirtir.

Yorumlar (7)

Dosyaları istediğiniz yere taşıdığınızda, .git dizinini de taşıyor musunuz? İşletim sisteminize ve yapılandırmanıza bağlı olarak bu dizin gizli olabilir.

Repo ve destekleyici dosyaları içerirken, /public dizininizdeki proje dosyaları yalnızca şu anda check-out commit'indeki sürümlerdir (varsayılan olarak master branch).

Yorumlar (0)