Saya seorang Noob yang lengkap dalam hal GIT. Saya baru saja mengambil langkah pertama saya selama beberapa hari terakhir. Saya menyiapkan repo di laptop saya, menarik Trunk dari proyek SVN (memiliki beberapa masalah dengan cabang, tidak membuat mereka berfungsi), tetapi semua tampaknya ok di sana.
Saya sekarang ingin dapat menarik atau mendorong dari laptop ke desktop utama saya. Alasannya karena laptop ini praktis di kereta karena saya menghabiskan 2 jam sehari bepergian dan bisa menyelesaikan pekerjaan dengan baik. Tapi mesin utama saya di rumah bagus untuk pengembangan. Jadi saya ingin dapat mendorong / menarik dari laptop ke komputer utama ketika saya pulang. Saya pikir cara paling sederhana untuk melakukan ini adalah dengan hanya memiliki folder kode bersama di LAN dan lakukan:
git clone file://192.168.10.51/code
sayangnya ini sepertinya tidak berhasil untuk saya:
jadi saya buka git bash cmd dan ketik perintah di atas, saya di C: \ code (folder bersama untuk kedua mesin) ini adalah apa yang saya dapatkan kembali:
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Bagaimana saya bisa berbagi repositori antara dua mesin dengan cara yang paling sederhana.
Akan ada lokasi lain yang akan menjadi titik penyimpanan resmi dan tempat-tempat di mana devs lainnya dan server CI dll akan menarik dari, ini hanya agar saya dapat bekerja pada repo yang sama di dua mesin.
Sesuai saran Sebastian saya mendapatkan yang berikut:
C:\code>git clone --no-hardlinks file://192.168.10.51/code
Initialized empty Git repository in C:/code/code/.git/
fatal: 'C:/Program Files (x86)/Git/code' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
** EDIT - JAWABAN **
Terima kasih untuk semua yang telah membantu. Saya mencoba pemetaan drive dan itu berhasil jadi saya pikir saya akan kembali dan mencoba lagi tanpa pemetaan. Hasil akhirnya adalah:
git clone file://\\\\192.168.0.51\code
Ini bekerja dengan baik.
Terima kasih
Jawaban:
Anda dapat menentukan URL jarak jauh dengan menerapkan jalur UNC ke protokol file. Ini mengharuskan Anda untuk menggunakan empat garis miring:
Sebagai contoh, jika mesin utama Anda memiliki IP 192.168.10.51 dan nama komputer
main
, dan memiliki share bernamacode
yang itu sendiri adalah repositori git, maka kedua perintah berikut harus bekerja sama:Jika repositori Git berada dalam subdirektori, cukup tambahkan path:
sumber
Perintah di atas menggunakan notasi jalur POSIX untuk direktori dengan repositori git Anda. Untuk Windows itu adalah (direktori
C:/path/to/repo
berisi.git
direktori):Repositori akan dikloning ke
C:\some\dir\my_project
. Jika Anda menghilangkanfile:///
bagian maka--local
opsi tersirat.sumber
jawaban dengan nama host tidak bekerja untuk saya tetapi ini berhasil:
sumber
Saya berhasil melakukan ini menggunakan file: //, tetapi dengan satu garis miring tambahan untuk menunjukkan jalur absolut.
Dalam kasus saya, saya menggunakan Git di Cygwin untuk Windows, yang dapat Anda lihat karena bagian / cygdrive / c di jalur saya. Dengan beberapa penyesuaian pada path, ia seharusnya bekerja dengan semua instalasi git.
Menambahkan remote berfungsi dengan cara yang sama
sumber
Mungkin memetakan berbagi sebagai drive jaringan dan kemudian lakukan
Sebagian besar hanya dugaan; Saya selalu melakukan hal ini menggunakan ssh. Mengikuti saran itu tentu saja berarti Anda harus memetakan drive itu setiap kali Anda menekan / menarik ke / dari laptop. Saya tidak yakin bagaimana Anda mengatur ssh untuk bekerja di bawah windows tetapi jika Anda akan sering melakukan ini, mungkin perlu diselidiki.
sumber
cd
ke direktori lain diZ:
drive. IIRC; Saya belum menjadi pengguna Windows dalam beberapa waktu. Mungkin juga bahwagit
penafsiran huruf drive berbeda dari konvensi Windows standar. Apakah Anda mencoba `Z:`?Tidak yakin apakah itu karena versi git saya (1.7.2) atau apa, tetapi pendekatan yang tercantum di atas menggunakan nama mesin dan opsi IP tidak berfungsi untuk saya. Detail tambahan yang mungkin / mungkin tidak penting adalah bahwa repo itu repo kosong yang telah saya inisialisasi dan didorong dari mesin yang berbeda.
Saya mencoba untuk mengkloning project1 seperti yang disarankan di atas dengan perintah seperti:
dan
Apa yang melakukan pekerjaan bagi saya adalah sesuatu yang sederhana:
Catatan - meskipun repo yang sedang dikloning itu telanjang, ini memang menghasilkan klon 'normal' dengan semua file kode / gambar / sumber daya aktual yang saya harapkan (sebagai lawan internal dari git repo).
sumber
Entah memasukkan jalur absolut atau jalur relatif.
Misalnya yang pertama di bawah ini menggunakan jalur absolut:
(ini dari dalam folder yang berisi repositori dan cadangan sebagai subfolder. juga ingat bahwa folder cadangan tidak dimodifikasi jika sudah mengandung apa pun. dan jika tidak ada, folder baru akan dibuat)
Berikut ini menggunakan jalur relatif:
sumber
Sementara jalur UNC didukung sejak Git 2.21 (Februari 2019, lihat di bawah), Git 2.24 (Q4 2019) akan memungkinkan
Tidak lagi
file:////xxx
, 'file://
' sudah cukup untuk merujuk ke berbagi jalur UNC.Lihat " Git Fetch Error with UNC ".
Catatan, sejak 2016 dan MingW-64 yang
git.exe
dikemas dengan Git untuk Windows , jalur UNC didukung.(Lihat " Bagaimana kaitan msys, msys2, dan MinGW-64? ")
Dan dengan Git 2.21 (Februari 2019), dukungan ini bahkan meluas dalam shell msys2 (dengan kutipan di sekitar jalur UNC).
Lihat komit 9e9da23 , komit 5440df4 (17 Jan 2019) oleh Johannes Schindelin (
dscho
) .Dibantu-oleh: Kim Gybels (
Jeff-G
) .(Digabung oleh Junio C Hamano -
gitster
- di commit f5dd919 , 05 Feb 2019)Sebelum Git 2.21, karena kekhasan dalam metode Git untuk menelurkan
git-upload-pack
, ada masalah ketika melewati jalur dengan garis miring terbalik di dalamnya: Git akan memaksa baris perintah melalui shell, yang memiliki semantik kutipan berbeda dalam Git untuk Windows (menjadi MSYS2 program) daripada executable Win32 biasa sepertigit.exe
itu sendiri.Gejala adalah bahwa yang pertama dari dua backslashes di UNC path dari bentuk
\\myserver\folder\repository.git
yang menanggalkan .Ini sedang dimitigasi:
Lihat
t/t5580-clone-push-unc.sh
sumber
Setelah klon, bagi saya push tidak berfungsi.
Solusi: Di mana repo dikloning, buka folder .git dan file konfigurasi.
Untuk nilai set url asal jarak jauh:
sumber