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.