Saya punya proyek tempat saya membuat repositori git:
$ cd myproject
$ git init
$ git add .
$ git commit
Saya ingin membuat klon kosong di komputer lain:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Saya mengeksekusi klon tetapi tidak mencetak jawaban. Saya masuk ke mesin server dan mencoba melihat bagaimana file disimpan. Path / GitRepos kosong, jadi saya memutuskan untuk melakukan kloning lagi:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Kali ini jawabannya adalah:
fatal: path tujuan 'ssh: // user @ server: /GitRepos/myproject.git' sudah ada dan bukan direktori kosong.
Tetapi saya melihat bahwa jalan itu kosong.
Apa yang terjadi di sini ?
git clone --bare
akan melakukan apa yang menurut Anda akan dilakukan.Jawaban:
Ini mungkin tidak terkait langsung dengan pertanyaan; tetapi satu kesalahan yang baru saja saya buat sendiri, dan saya lihat di OP, adalah spesifikasi URL
ssh://user@server:/GitRepos/myproject.git
- yaitu, Anda memiliki titik dua:
, dan garis miring/
setelah itu menandakan jalur absolut.Saya kemudian menemukan klon Git, ssh: Tidak dapat menyelesaikan nama host - git, pengembangan - Nicolas Kuttler (karena itu adalah kesalahan yang saya dapatkan, pada
git
versi 1.7.9.5), mencatat:... yang juga masalah saya! Jadi pada dasarnya
git
denganssh
, Anda juga menggunakanssh://[email protected]/absolute/path/to/repo.git/
- hanya garis miring untuk jalur absolut di server[email protected]:relative/path/to/repo.git/
- hanya titik dua (tidak harus memilikissh://
path relatif pada server (relatif terhadap dir homeusername
pada mesin server)Semoga ini bisa membantu seseorang,
Ceria!
sumber
ssh://
awalan. Saya hanya menghabiskan 20 menit untuk mencari tahu ini.git clone [email protected]:relative/path/to/repo.git/
harus bekerja.Untuk repositori di GitHub, coba:
Untuk mengatur git untuk mengkloning melalui ssh, lihat:
Membuat Kunci SSH dan menambahkan kunci Anda yang dihasilkan di Pengaturan Akun -> Kunci SSH
Kloning dengan SSH
sumber
Anda perlu menjalankan perintah klon pada apa yang Anda panggil server. Tapi saya yakin Anda tidak menjalankan ssh server pada klien lokal Anda sehingga tidak akan berhasil. Sarankan Anda mengikuti pendekatan ini (periksa manual karena saya melakukan ini dari memori)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
diikuti olehgit push origin master
sumber
Penafian: Ini hanya salinan komentar oleh bobbaluba yang dibuat lebih terlihat oleh pengunjung masa depan. Itu membantu saya lebih dari jawaban lain.
Anda harus membuang
ssh://
awalan saat menggunakangit clone
sebagai contohsumber
coba ini.
Langkah 1:
Langkah 2:
(menggunakan tombol enter untuk nilai default) Langkah 3: Untuk mengatur file konfigurasi
Langkah 4:
Langkah 5:
Ketika Anda selesai Langkah 4
1. file test2.git akan diunduh selesai
2. Anda akan mendapatkan file baru (known_hosts) di ~ / .ssh
PS: Saya membuat id_rsa dan id_rsa.ub oleh meself dan saya mengirimkannya ke server Gitlab. menggunakan kedua kunci untuk sisi klien (windows dan Linux).
sumber
Git 101:
git
adalah sistem kontrol versi desentralisasi. Anda tidak perlu memerlukan server untuk bangkit dan berjalan dengan git. Masih mungkin Anda ingin melakukan itu karena terlihat keren, bukan? (Ini juga berguna jika Anda ingin bekerja pada satu proyek dari beberapa komputer.)Jadi untuk menjalankan "server" Anda harus menjalankannya
git init --bare <your_project>.git
karena ini akan membuat repositori kosong, yang kemudian dapat Anda impor pada mesin Anda tanpa harus menyelinap di file konfigurasi dalam.git
direktori Anda .Setelah ini, Anda dapat mengkloning repo pada klien Anda seperti yang seharusnya berfungsi, tetapi saya menemukan bahwa beberapa klien (yaitu
git-gui
) akan gagal untuk mengkloning repo yang benar-benar kosong. Untuk mengatasi ini, Anda perlu menjalankancd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Perhatikan bahwa Anda mungkin perlu mengonfigurasi nama pengguna dan email untuk git mesin itu jika Anda belum melakukannya di masa lalu. Perintah yang sebenarnya untuk dijalankan akan ada dalam pesan kesalahan yang Anda dapatkan sehingga saya akan menghilangkannya.)Jadi pada titik ini Anda dapat mengkloning repositori ke mesin apa pun hanya dengan menjalankan
git clone <user>@<server>:<relative_path><your_project>.git
. (Seperti yang telah ditunjukkan oleh orang lain, Anda mungkin perlu mengawali denganssh://
jika Anda menggunakan jalur absolut.) Ini mengasumsikan bahwa Anda sudah bisa masuk dari klien Anda ke server. (Anda juga akan mendapatkan poin bonus untuk menyiapkan file konfigurasi dan kunci untukssh
, jika Anda bermaksud mendorong banyak hal ke server jarak jauh.)Beberapa tautan yang relevan:
Ini cukup banyak memberi tahu Anda apa yang perlu Anda ketahui.
Dan ini untuk mereka yang tahu cara kerja dasar git tapi kadang-kadang lupa sintaks yang tepat.
sumber
Saya ingin mencoba jawaban yang mencakup git-flow, dan tiga 'poin' atau kasus penggunaan, git central repository, pengembangan lokal dan mesin produksi. Ini tidak diuji dengan baik .
Saya memberikan perintah yang sangat spesifik. Alih-alih mengatakan
<your folder>
, saya akan mengatakan/root/git
. Satu-satunya tempat saya mengubah perintah asli adalah mengganti nama server spesifik saya denganexample.com
. Saya akan menjelaskan tujuan folder agar Anda dapat menyesuaikannya. Tolong beri tahu saya jika ada kebingungan dan saya akan memperbarui jawabannya.Versi git di server adalah 1.7.1. Servernya adalah CentOS 6.3 (Final).
Versi git pada mesin pengembangan adalah 1.8.1.1. Ini adalah Mac OS X 10.8.4.
Repositori pusat dan mesin produksi berada di mesin yang sama.
repositori pusat, dimana svn yang dapat dihubungkan pengguna sebagai 'server' dikonfigurasi sebagai berikut. Saya memiliki folder
/root/git
tempat saya menyimpan semua repositori git saya. Saya ingin membuat repositori git untuk proyek yang saya sebut 'bunga'.Perintah git memberikan dua pesan:
Tidak ada yang perlu dikhawatirkan.
Pada mesin pengembangan dikonfigurasi sebagai berikut. Saya memiliki folder
/home/kinjal/Sites
tempat saya meletakkan semua proyek saya. Sekarang saya ingin mendapatkan repositori central git.Ini membuat saya sampai pada titik di mana saya bisa mulai menambahkan barang ke sana. Saya pertama kali mengatur aliran git
Secara default ini ada di cabang
develop
. Saya menambahkan kode saya di sini, sekarang. Maka saya perlu komit ke repositori central git.Pada titik ini mendorong ke cabang mengembangkan. Saya ingin juga menambahkan ini ke cabang master.
Perhatikan bahwa saya tidak melakukan apa pun di antara mulai rilis dan selesai rilis. Dan ketika saya selesai menyelesaikan rilis saya diminta untuk mengedit dua file. Ini mendorong cabang pengembangan untuk dikuasai.
Di situs produksi, yang berada di mesin yang sama dengan repositori central git saya, saya ingin memasukkan repositori ke dalamnya
/var/www/vhosts/example.net
. Saya sudah punya/var/www/vhosts
.Jika mesin produksi juga berada pada mesin yang berbeda,
git clone
perintahnya akan terlihat seperti yang digunakan pada mesin pengembangan.sumber
Di muka, saya sedikit kurang dalam keterampilan GIT saya.
Itu akan mengkloning repositori kosong pada mesin Anda, yang hanya berisi folder di dalamnya
.git
yang merupakan direktori tersembunyi. jalankanls -al
dan Anda akan melihat.git
ataucd .git
di dalam repositori Anda.Bisakah Anda menambahkan deskripsi niat Anda sehingga seseorang dengan keterampilan GIT yang lebih banyak dapat membantu? Apa yang sebenarnya Anda ingin lakukan, bukan bagaimana Anda berencana melakukannya?
sumber
Saya lakukan: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Hasil: fatal: path tujuan 'ssh: // luc @ EERSTENASDS119J / volume1 / RepoA' sudah ada dan sudah bukan direktori kosong.
Sistem membuat direktori ssh: // luc @ EERSTENASDS119J / volume1 / RepoA di jalur saya saat ini.
Jadi klon git tidak menafsirkan spesifikasi URL. Menggunakan solusi dari Alec.
sumber
git clone git @ server: Contoh / proyect.git
sumber