Mengkloning konten repositori GitHub (tanpa folder itu sendiri)


233

Saya ingin git cloneisi repositori yang saya miliki di GitHub . Ketika saya git clone(git @ github: me / name.git ...) Saya mendapatkan folder bernama name/dan di dalam nama saya memiliki konten saya ... Bagaimana saya mendapatkan HANYA isinya?



Untuk benar-benar melewati pengunduhan objek yang tidak diperlukan untuk menghemat sumber daya jaringan: stackoverflow.com/questions/600079/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:


314

Jika direktori saat ini kosong, Anda dapat melakukannya dengan:

git clone git@github:me/name.git .

(Catat .di bagian akhir untuk menentukan direktori saat ini.) Tentu saja, ini juga membuat .gitdirektori di folder Anda saat ini, bukan hanya kode sumber dari proyek Anda.

[directory]Parameter opsional ini didokumentasikan dalam git clonehalaman manual , yang menunjukkan bahwa kloning ke direktori yang ada hanya diperbolehkan jika direktori itu kosong.


2
Sayangnya, ini tidak berfungsi jika ada direktori lain yang tidak terkait sudah dalam direktori yang sama. Mencari solusi. Pesan kesalahan adalah: "fatal: path tujuan '.' sudah ada ... "
John Little

12
Direktori git
clon ke dalamnya

1
@HumaunRashid Tambahkan .seperti yang dibahas dalam jawaban: git clone https://github.com/humaun21/Test .. Dan ya, git@github.me/name.gitadalah pengganti untuk apa pun alamat git repo Anda yang sebenarnya.
Aaron Campbell

1
@JohnLittle Punya masalah yang sama, ternyata ada file .DS_Store tersembunyi, yang bersembunyi di sana. Cukup rm .DS_Storedan Anda baik untuk pergi.
Selrond

1
Jika Anda bekerja pada OS linux, Anda harus memastikan direktori tersebut kosong termasuk memeriksa file dan subdirektori yang tersembunyi. Anda dapat melakukannya dengan ls-a. Anda seharusnya hanya punya. dan .. sebagai output. Ini tidak akan berhasil jika tidak
Ayo Makanjuola

156

Sayangnya, ini tidak berfungsi jika ada direktori lain yang tidak terkait sudah dalam direktori yang sama. Mencari solusi. Pesan kesalahan adalah: "fatal: path tujuan '.' sudah ada...".

Solusi dalam hal ini adalah:

git init
git remote add origin git@github.com:me/name.git
git pull origin master

Resep ini berfungsi bahkan jika ada direktori lain yang ingin Anda periksa.


Hai dalam hal ini saya mendapatkan kesalahan seperti Izin ditolak <kunci publik>. Ujung jarak jauh menutup secara tak terduga.
Stan

Bukankah seharusnya github.comada di sana setelah itu git remote ..., dan bukan hanya github?
amn

5
Jawaban ini seharusnya diterima satu. bekerja dengan sempurna.
vikramvi

Saya membaca di tempat lain di sini bahwa Anda perlu menjalankan git fetch --allsebelum git pull origin master, karena jika ada cabang lain di repo, git pulltidak akan mendapatkannya kecuali Anda menggunakannya fetchterlebih dahulu. Apakah ini benar?
Alex G

38

Jika foldernya tidak kosong, jawaban @ JohnLittle versi yang sedikit dimodifikasi berhasil untuk saya:

git init
git remote add origin https://github.com/me/name.git
git pull origin master

Seperti yang ditunjukkan oleh @ peter-cordes, satu-satunya perbedaan adalah menggunakan protokol https alih-alih git, di mana Anda perlu mengonfigurasi kunci SSH .


Apa versi git yang Anda jalankan? Ini tidak berhasil untuk saya. Masih tidak akan membiarkan saya mengaturnya karena dir tidak kosong
guribe94

@ guribe94 git versi 2.5.0
Tomáš Zemanovič

3
Ini adalah jawaban yang sama, hanya menggunakan https anonim alih-alih protokol git melalui ssh (memerlukan akun github dengan pengaturan kunci ssh yang diatur).
Peter Cordes

15

Anda dapat menentukan direktori tujuan sebagai parameter kedua dari git cloneperintah, sehingga Anda dapat melakukan:

git clone <remote> .

Ini akan mengkloning repositori secara langsung di direktori lokal saat ini.


2

untuk mengkloning git repo ke folder saat ini dan kosong (tidak git init) dan jika Anda tidak menggunakan ssh:

git clone https://github.com/accountName/repoName.git .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.