Aku melakukan:
git clone ssh://[email protected]/home/user/private/repos/project_hub.git ./
Saya mendapatkan:
Fatal: jalur tujuan '.' sudah ada dan bukan direktori kosong.
Saya tahu jalan. sudah ada. Dan saya dapat memastikan direktori itu kosong. (Aku melakukannya di dalam dan aku tidak melihat apa-apa!)
Apa yang saya lewatkan di sini untuk mengkloning proyek itu ke direktori saat ini?
ls -a
apakah Anda melihat.git
direktori?Jawaban:
cukup beri titik di sebelahnya
Dari
git help clone
:Jadi pastikan direktori tersebut kosong (periksa dengan
ls -a
), jika tidak maka perintah akan gagal.sumber
ls -la
mkdir
membuat hardlink ke.
dan..
secara default, jadi apakah direktori baru secara teknis "kosong" di sistem berbasis Unix? Maksud saya, saya kira Anda bisaunlink .
danunlink ..
tetapi itu dapat menyebabkan masalah besar di kemudian hari jika Anda lupa untuk menautkan kembali setelah kloning ....Berikut ini mungkin tidak sepenuhnya setara dengan klon dalam semua kasus tetapi melakukan trik untuk saya:
Dalam kasus saya, ini menghasilkan
.git/config
file yang setara dengan yang saya dapatkan ketika melakukan klon.sumber
*
(abaikan semuanya) saya bisa melakukangit checkout master
walaupun sudah ada beberapa file lain di folder. Kemudian semua file yang dikomit dari repositori diklon (dan .gitignore sementara ditimpa oleh .gitignore yang tepat dari repo). Semuanya bekerja dengan sangat baik. Itu harus terjadi dengan cara ini sendiri dengan menggunakangit clone -f
atau sesuatu.-t \*
perlu karena ini adalah default.git remote set-head origin -a
mungkin berguna. Ini menetapkan cabang default asal (refs/remotes/origin/HEAD
) seperti yang diatur dalam repositori jarak jauh.git clone
melakukan ini secara otomatis, tidak sepertigit remote add -f
.@Andrew telah menjawabnya dengan jelas di sini . Tetapi sesederhana ini juga berfungsi meskipun direktori tidak kosong:
sumber
<repository-url>
juga bisa menjadi repo lokalgit remote add origin /path/to/existing/repo
Untuk memastikan bahwa Anda dapat mengkloning repo, buka direktori sementara dan klon proyek di sana:
Ini akan mengkloning barang-barang Anda ke
project_hub
direktori.Setelah kloning selesai, Anda dapat memindahkan direktori ini ke mana pun Anda inginkan:
Ini aman dan tidak memerlukan hal-hal ajaib di sekitar.
sumber
/path/to/new/location
yang tentunya bukan inti dari pertanyaan.sumber
Melakukan
Direktori harus kosong
sumber
Hmm ... menentukan jalur absolut saat ini menggunakan
$(pwd)
bekerja untuk saya.versi git: 2.21.0
sumber
Jika direktori saat ini kosong, maka ini akan berfungsi:
sumber
Selain jawaban @ StephaneDelcroix, sebelum menggunakan:
pastikan direktori Anda saat ini kosong dengan menggunakan
sumber
Solusi: Pada kasus ini, solusinya menggunakan
dot
, jadi:rm -rf .* && git clone ssh://[email protected]/home/user/private/repos/project_hub.git .
rm -rf .* &&
dapat dihilangkan jika kami benar-benar yakin direktori tersebut kosong.Kredit masuk ke: @James McLaughlin pada komentar di bawah.
sumber
ls -d .*
. ..
saya: ~ / tmp / tmp / tmp $rm -rf ./.*
"lebih aman" jika Anda hanya menghapus file dan direktori tersembunyi (titik) di bawah direktori saat ini (seperti yang dikatakan @stackunderflow di depan saya). Tetapirm -rf
ini adalah perintah yang berbahaya bagi pengguna yang tidak berpengalaman jadi berhati-hatilah! Hanya 2 sen saya..git
setelahgit init
(saya tahu)-rf
menghapus file normal. Harap pertimbangkan untuk menghapus jawaban ini atau setidaknya menerima jawaban yang berbeda.Meningkatkan pada jawaban @ GoZoner:
Perintah shopt diambil dari jawaban SO ini dan mengubah perilaku perintah 'mv' pada Bash untuk memasukkan dotfile, yang Anda harus sertakan direktori .git dan file tersembunyi lainnya.
Perhatikan juga bahwa ini hanya dijamin berfungsi apa adanya adalah jika direktori saat ini (.) Kosong, tetapi akan berfungsi selama tidak ada file dalam repo yang dikloning yang memiliki nama yang sama dengan file di direktori saat ini. Jika Anda tidak peduli apa yang ada di direktori saat ini, Anda dapat menambahkan opsi -f (force) ke perintah 'mv'.
sumber
Saya memiliki kebutuhan yang sama. Dalam kasus saya, saya memiliki folder web standar yang dibuat oleh instalasi server web. Untuk keperluan ilustrasi ini katakanlah ini
/server/webroot
dan webroot berisi file dan folder standar lainnya. Repo saya hanya memiliki file spesifik situs (html, javascript, CFML, dll.)
Yang harus saya lakukan adalah:
Anda perlu berhati-hati untuk melakukan git init di folder target karena jika Anda TIDAK satu dari dua hal akan terjadi:
Ini TIDAK mengganggu salah satu dari file "standar" yang saya miliki di folder webroot saya, tetapi saya memang perlu menambahkannya ke file .gitignore untuk mencegah penambahan yang tidak disengaja dari mereka untuk komit berikutnya.
Sepertinya ini cara mudah untuk "mengkloning" ke direktori yang tidak kosong. Jika Anda tidak ingin file .git dan .gitignore dibuat oleh tarikan, hapus saja setelah tarikan.
sumber
Lebih lanjut memperbaiki jawaban @ phatblat :
sebagai satu liner:
git clone --no-checkout <repository> tmp && mv tmp/.git . && rmdir tmp && git checkout master
sumber
sumber
gunakan. (titik) di akhir perintah Anda seperti di bawah ini
URL klon git .
sumber
fatal: destination path '.' already exists and is not an empty directory.
Inilah yang saya temukan:
Saya melihat ini:
Di antara pencarian saya, saya menemukan:
https://couchpota.to/forum/viewtopic.php?t=3943
Cari entri oleh Clinton. Bagaimana ... Jika Anda mencoba ini (seperti yang saya lakukan), Anda mungkin akan mendapatkan
access denied
jawabannya, ada petunjuk pertama saya, jadi kesalahan awal (untuk saya), sebenarnya dihindari oleh root yang salah isu.Solusi untuk ini di windows: pastikan Anda menjalankan
cmd
ataugit elevated
, kemudian jalankan:Di atas adalah masalah saya dan hanya mengangkat bekerja untuk saya.
sumber
Solusi untuk
Windows
adalah dengan mengkloning repositori ke folder lain dan kemudian salin dan tempel ke lokasi asli atau cukup salin.git
folder yang tidak terlihat.sumber
Menghapus dengan
dapat membuat Anda mendapat masalah atau beberapa kesalahan lagi.
Jika Anda memiliki / path / ke / folder, dan ingin menghapus semua yang ada di dalamnya, tetapi bukan folder itu, jalankan saja:
sumber
Jadi saya memperbaiki kesalahan yang sama dengan menghapus folder .git tersembunyi di direktori root saya, dan kemudian menambahkan periode ke 'git clone repo.' di folder root / dist saya. Ini dalam konteks proyek webpack vue-cli. Jadi apa yang orang lain katakan adalah benar, biasanya itu berarti Anda memiliki pelacakan git baik di folder yang Anda coba klon ke dalam atau di folder induk atau root folder yang dimaksud!
sumber
sumber
jika repo bersifat pribadi, pertama - tama tambahkan kunci ssh Anda gunakan => git clone [email protected]: yourusername / yourrepo.git lain gunakan => git clone https://github.com/yourusername/yourrepo.git
sumber
ini berguna untuk membuat file baru dengan
mkdir filename
, kemudian menjalankan perintahgit clone xxxxx
, itu berfungsi di komputer sayasumber
Saya telah melihat pertanyaan ini berkali-kali - dan saya hanya ingin menunjukkan bahwa
git pull
dari dalam direktori Anda akan melakukan trik.Kecuali saya kehilangan sesuatu di sini - itu berhasil untuk saya.
sumber
git pull
tidak akan melakukan apa pun jika Anda tidak memiliki repositori yang ditentukan, yang merupakan bagian penting dari apa yanggit clone
dilakukan.