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


2244

Komutun yürütülmesi, git clone git@github.com:whateverşu anki klasörümde bir dizin oluşturur whateverve Git deposunun içeriğini bu klasöre bırakır:

/httpdocs/whatever/public

Benim sorunum, web sunucunun doğru konumda görünmesi için geçerli dizinime klonlanmış Git deposunun içeriğine ihtiyacım var:

/httpdocs/public

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


3
Windows'ta dosyaları repo'yu [varsa] kopyalayacağınız klasörden taşıyabilirsiniz, böylece git clone yaptığınızda boş olur . Klonladıktan sonra dosyalarınızı [ctrl-z] ve whoala'ya geri taşıyın ! Geçerli klasör boşsa şunu kullanın: git clone giturl .

44
voila yazım
Matthias

81
@MatthiasDailey voilà olan gerçek yazım
silkfire

6
et voilà , et voilà için Fransızca
Fattie

Yanıtlar:


3220

Seçenek A:

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

Ergo, right herekullanım için:

git clone git@github.com:whatever .

Seçenek B:

.gitKlasörü de taşıyın . .gitKlasörün çoğu grafik dosya gezgininde gizlendiğini 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 nokta dosyalarını alır. Ayrıca dotglob (yani shopt -s dotglob) 'ı etkinleştirerek tek bir satırda yapmak da mümkündür, ancak bu cevabın cevapladığı soruyu soruyorsanız muhtemelen kötü bir çözümdür.

Daha iyisi:

Çalışan 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

Senin için bu şöyle bir şey olurdu:

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

İsterseniz test etmek için kolayca değiştirilebilir, yani:

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

dosyaları hareket ettirmeden. Eklenen -fnvaka birisi bu satırları kopyalıyor içinde ( -fgüçtür, -nzaten olmayan mevcut bağlantılar ile bazı sıklıkla istenmeyen etkileşimler kaçının).

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


8
'Henüz daha iyi' seçeneğini düşünmemiştim ve neden olduğundan emin olmasam da beğendim. Bunun avantajları nelerdir?
David Smith

6
Muhtemelen şu anda herhangi bir avantaj sağlamaz, ancak bir gün bir şeyleri hareket ettirmeye karar verirseniz size çok fazla sorun kazandırabilir.
Can Berk Güder

12
Ayrıca "Daha iyi" seçeneği ile sürümler arasında hızlıca geçiş yapabilirsiniz. Bu özellikle kullanışlıdır ve sunucular için kullanılır.
Halil Özgür

4
@MEM Bence .git'e sembolik bir bağ kurmak anlamına geldiğini düşünüyorumln -s path/to/.git path/to/working/directory
Alexander

27
Herkes bunun faydalarını açıklayabilir misiniz? Bugün biraz yoğunum. Symlink sunucuları nasıl kullanılır?
üçlü

586

Sanırım bu soruyu soran birçok insan peşinde. Eğer varsa içinde dizine sen git deposu içeriğini çalıştırmak terk istiyorum:

git clone git@github.com:whatever .

"." sonunda mevcut klasörü ödeme klasörü olarak belirtir.


28
true, bu nedenle klonlamadan önce bu klasörde "git init" komutunu çalıştırmak istemezsiniz. Ancak bunu yaptıysanız, klonlamadan önce .git klasörünü kaldırmak hile yapacaktır.
Magne


1
Bu nitrous.io çalışamadı? boşalttıktan sonra bile, dizin boş değil diyor
Tejas Manohar

@TejasManohar Gizli dosyaları da sildiğinizden emin olun.
Britic

ls -agizli olanlar da dahil olmak üzere tüm dosyaları gösterir.
Michael Dorst

215

Klasöre gidin. Klasör boşsa, o zaman:

git clone git@github.com:whatever .

Başka

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

9
Aslında, yeni oluşturulan depoya yeni oluşturulmuş projeyi zorlamam gerektiğinde bu benim için en yararlı cevaptı. Kudos!
wirher

13
Yalnızca boş olmayan bir klasöre nasıl ödeme yapılacağını belirten cevap, teşekkür ederim.
Preston Badeer

2
switch -tÜzerinde git checkout belgelerinde açıkça gösterilmediğinden bu gerçekten yararlıdır .
Chetabahana

4
-t anahtarı ne yapar? Ödeme tarafından üzerine yazılacak izlenmeyen dosyaların bir listesini içeren bir iptal mesajı alıyorum? Bu durumda ne yapmalı? Bu dosyaların üzerine yazılmasını istemiyorum?
Momin Zahid

2
-t git'ten belgeler: -t, --track Yeni bir dal oluştururken "yukarı akış" yapılandırmasını ayarlayın. Ayrıntılar için git-dalındaki (1) "--track" bölümüne bakın.
csomakk

87

Temel Git Veri Havuzu Klonlaması

Bir havuzu klonladınız

git clone [url]

Örneğin, open_framework adlı Stanford Üniversitesi Drupal Open Framework Git kütüphanesini kopyalamak istiyorsanız, bunu şu şekilde yapabilirsiniz:

$ git clone git://github.com/SU-SWS/open_framework.git

Bu, open_framework adlı bir dizin oluşturur (geçerli yerel dosya sistemi konumunuzda), içindeki bir .git dizinini başlatır, bu havuz için tüm verileri aşağı çeker ve en son sürümün çalışan bir kopyasını denetler. Yeni oluşturulan open_framework dizinine girerseniz, orada üzerinde çalışmaya veya çalışmaya hazır proje dosyalarını görürsünüz.

Bir Havuzu Belirli Bir Yerel Klasöre Kopyalama

Depoyu open_framework dışında bir ad taşıyan bir dizine klonlamak istiyorsanız, bunu bir sonraki komut satırı seçeneği olarak belirtebilirsiniz:

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

Bu komut öncekiyle aynı şeyi yapar, ancak hedef dizine mynewtheme denir.

Git'in kullanabileceğiniz birkaç farklı aktarım protokolü vardır. Önceki örnek git: // protokolünü kullanır, ancak SSH aktarım protokolünü kullanan http (s): // veya user @ server: /path.git öğesini de görebilirsiniz.


bu otomatik olarak geçerli klasörünüzde bir klasör oluşturur ve dosyaları oraya koyar. Bu nedenle, başka bir klasörün üzerine yazma konusunda endişelenmenize gerek yoktur.
arn-arn

24

Git deposunu belirli bir klasöre kopyalamak için -C <path>parametre kullanabilirsiniz , örn.

git -C /httpdocs clone git@github.com:whatever

Her ne kadar whateverüstünde bir klasör oluştursa da , deponun içeriğini geçerli dizine klonlamak için aşağıdaki sözdizimini kullanın:

cd /httpdocs
git clone git@github.com:whatever .

Varolan bir dizine klonlamaya yalnızca dizin boşken izin verilir .

Herkese açık olarak erişilebilen bir klasöre klonladığınızdan, Git deponuzu web ağacı yapılandırmanızdaki (ör. Dosyada) klasörü kullanarak --separate-git-dir=<git dir>veya hariç tutarak çalışma ağacınızdan ayırmayı düşünün ..git.htaccess


17

Mevcut Çalışma Dizini'ni klonlamak için :

git clone https://github.com/link.git

Başka Bir Dizine klonlamak için :

git clone https://github.com/link.git ./Folder1/Folder2

Umarım yardımcı olur :)


bu da benim için çalıştı. ./klasör yolunun başında değil
Alon Gouldman

13

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

Bu, repo ve destekleyici dosyaları içerirken, /publicdizininizdeki proje dosyaları yalnızca şu anda kullanıma alma işlemindeki sürümlerdir (varsayılan olarak ana dal).


13

Klon:

git clone git@jittre.unfuddle.com:jittre/name.git

"Spesifik dalı" klonlayın:

git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git

13

Geçerli klasöre kopyalamak istiyorsanız şunu denemelisiniz:

git clone https://github.com/example/example.git ./

8
fatal: hedef yol '.' zaten var ve boş bir dizin değil.
Cleiton

11

kullanım

git clone <repository>

<repository> öğesinde bulunan havuzu yerel makineye kopyalayın. Orijinal depo yerel dosya sisteminde veya HTTP veya SSH aracılığıyla erişilebilen uzak bir makinede bulunabilir.

git clone <repo> <directory>

<repository> konumunda bulunan havuzu yerel makinedeki <directory> adlı klasöre kopyalayın.

Kaynak: Havuz kurma


9

Geçerli dizine bir şey teslim etmeye çalışıyorsanız .git deposunu kaldırdığınızdan emin olun.

rm -rf .git sonra git clone https://github.com/symfony/symfony-sandbox.git


3

İşte böyle yapardım, ama bunu benim için yapmak için bir takma ad yaptım.

$ cd ~Downloads/git; git clone https:git.foo/poo.git

Muhtemelen bunu yapmanın daha zarif bir yolu var, ancak bunu kendim için en kolay buldum.

İşte işleri hızlandırmak için oluşturduğum takma ad. Ben zsh için yaptım, ama bash veya balık, xyzsh, fizsh, vb. Gibi herhangi bir kabuk için iyi çalışmalıdır.

Düzen ~/.zshrc, /.bashrcvb favori editörü ile (ben yazmak bu yüzden maden, Leafpad olduğunu $ leafpad ~/.zshrc).

Ancak kişisel tercihim, tüm takma adlarımı takip etmek için bir zsh eklentisi yapmaktır. Şu komutları çalıştırarak oh-my-zsh için kişisel bir eklenti oluşturabilirsiniz:

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

Daha sonra, bu satırları yeni oluşturulan boş alises.plugin dosyanıza ekleyin:

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(Buradan adınızı benimkiyle değiştirin.)

Daha sonra, takma adların çalışmasını sağlamak için, (zsh ile birlikte) kaynaklanmalıdır (veya ne denirse). Bunu yapmak için, özel eklenti belgenizin içine şunu ekleyin:

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

Oh-my-zsh eklentinizi kaydedin ve çalıştırın allsource. Bu işe yaramazsa, çalıştırın source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh. Bu, bundan sonra kullanmanıza izin verecek eklenti kaynağını yükleyecektir allsource.


Tüm takma adlarımla bir Git deposu oluşturma sürecindeyim. Lütfen buradan kontrol edebilirsiniz: Ev'in nokta dosyaları . Lütfen çatallamaktan çekinmeyin ve ihtiyaçlarınıza göre onları geliştirin.


2

Eğer kullanıyorsanız sshiçin git cloningaşağıdaki komutu kullanabilirsiniz.

git -C path clone git@github.com:path_to_repo.git

örneğin: git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.gitiçin git depo çekeceği requestssizin için /home/ubuntu/yolu.


2

Bazı nedenlerden dolayı bu sözdizimi göze çarpmıyor:

git clone repo-url [folder]

Burada klasör, yerel klasöre (yerel bir depo olacak) isteğe bağlı bir yoldur.

Git cloneayrıca pulluzak depodan yerel depoya kodlama yapar. Aslında bu doğrudur:

git clone repo-url  =  git init + git remote add origin repo-url + git pull

0

Yukarıdaki tüm cevaplar iyi olmasına rağmen, kabul edilen cevapta önerilen BEST olarak halka açık html dizininde sembolik bağlantı yöntemi kullanmak yerine yeni bir yöntem önermek istiyorum. Sunucu sanal ana bilgisayar yapılandırmalarınıza erişiminizin olması gerekir.

Web sunucunuzun sanal ana bilgisayarını doğrudan depo dizinine işaret ederek yapılandırmakla ilgilidir. Apache'de şöyle yapabilirsiniz:

DocumentRoot / var / www / html / website / your-git-repo

Sanal bir ana bilgisayar dosyası örneği:

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /path/to/your-git-repo
    ...
    ...
    ...
    ...
</VirtualHost>

0

Özel dizin adıyla klonlamak için aşağıdaki git komutunu kullanabilirsiniz

git clone <git_repo_url> <your_custom_directory_name>

Not: custome dizininizi oluşturmanız gerekmez, çünkü otomatik olarak oluşturulur


-1
For Windows user 

1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .

It will start cloning saving on the selected folder you given .

-5

Orijinal yayından bu satırla ilgili olarak:

"Repoyu klonladıktan sonra dosyaları nasıl taşıyacağımı biliyorum, ama git gitmiş gibi görünüyor"

Bunu yapabiliyorum ve şu ana kadar ekleme, işleme, itme, çekme işlemleri ile ilgili herhangi bir sorun görmüyorum.

Bu yaklaşım yukarıda belirtilmiştir, ancak adımlara bölünmemiştir. İşte benim için çalışan adımlar:

  1. repoyu herhangi bir geçici klasöre kopyalayın
  2. Yerel olarak klonladığınız kök klasöre cd
  3. /.git dizini de dahil olmak üzere klasörün tüm içeriğini istediğiniz herhangi bir klasöre kopyalayın; (repo ile birleştirmek istediğiniz bir tutulma projesi söyleyin)

Dosyaları yeni kopyaladığınız klasör artık git ile etkileşime hazırdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.