Mencoba sesuatu seperti git clone git://github.com/ry/node.git
tidak akan berhasil, itu menghasilkan:
Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)
Namun, kloning melalui HTTP berfungsi dengan baik. Sejauh ini saya sudah mengetahui bahwa itu masalah dengan protokol, tapi saya mencoba menginstal cloud9 yang memerlukan perintah
git submodule update --init --recursive
yang mencoba menggunakan protokol git: // dan gagal. Apakah ada cara untuk mengubah cara kerja perintah itu atau sesuatu?
git config --global url.https://.insteadOf git://
Jawaban:
Jika ini merupakan masalah dengan firewall Anda yang memblokir port protokol git: (9418), maka Anda harus melakukan perubahan yang lebih gigih sehingga Anda tidak harus ingat untuk mengeluarkan perintah yang disarankan oleh posting lain untuk setiap repo git.
Solusi di bawah ini juga hanya berfungsi untuk submodul yang mungkin juga menggunakan protokol git:.
Karena pesan git tidak benar-benar langsung menunjuk ke port memblokir firewall 9418, mari kita coba untuk mendiagnosis ini sebagai masalah aktual.
Mendiagnosis Masalah
Referensi: https://superuser.com/q/621870/203918 dan https://unix.stackexchange.com/q/11756/57414
Ada beberapa alat yang dapat kita gunakan untuk menentukan apakah firewall menyebabkan masalah kita - gunakan mana saja yang diinstal pada sistem Anda.
OK, jadi sekarang kita telah menentukan bahwa port git kita diblokir oleh firewall, apa yang bisa kita lakukan? Baca terus :)
Penulisan Ulang URL Dasar
Git menyediakan cara untuk menulis ulang URL menggunakan
git config
. Cukup terbitkan perintah berikut:Sekarang, seolah-olah dengan sihir, semua perintah git akan melakukan substitusi
git://
kehttps://
Apa Perubahan yang Dilakukan Perintah Ini?
Lihatlah konfigurasi global Anda menggunakan:
Anda akan melihat baris berikut di output:
Anda dapat melihat bagaimana ini terlihat di file, dengan mengintip di
~/.gitconfig
mana Anda sekarang akan melihat bahwa dua baris berikut telah ditambahkan:Ingin Lebih Banyak Kontrol?
Cukup gunakan URL yang lebih lengkap / spesifik dalam penggantian. Misalnya, untuk hanya memiliki URL GitHub gunakan https: // alih-alih git: //, Anda dapat menggunakan sesuatu seperti:
Anda dapat menjalankan perintah ini beberapa kali menggunakan penggantian yang berbeda. Namun, jika URL cocok dengan beberapa penggantian, kecocokan terlama "menang". Hanya satu penggantian yang akan dilakukan per URL.
Perubahan Seluruh Sistem untuk Sysadmin
Jika Anda seorang Sysadmin Linux dan Anda tidak ingin pengguna Anda harus melalui rasa sakit di atas Anda dapat membuat perubahan konfigurasi git cepat seluruh sistem.
Cukup edit atau tambahkan konten berikut ke
/etc/gitconfig
dan voila pengguna Anda tidak perlu khawatir tentang hal-hal di atas:sumber
git config --global url."https://github".insteadOf git://github
.git config --global --unset url."https://".insteadOf
Github juga menyediakan akses http, yang kecil kemungkinannya diblokir oleh perusahaan Anda. Untuk memberi tahu submodule untuk menggunakannya, Anda dapat melakukan ini:
Inilah sebenarnya mengapa init dan pembaruan adalah perintah yang terpisah - Anda dapat init, menyesuaikan lokasi, lalu memperbarui.
update --init
hanyalah jalan pintas ketika Anda tidak perlu menyesuaikan URL apa pun.Untuk siapa pun yang kebetulan melakukan hal ini, tentu saja Anda juga dapat menggunakan URL ssh (jika perusahaan Anda memblokir git: // tetapi tidak ssh), tetapi dalam hal ini OP mungkin tidak memiliki akses SSH ke repo jarak jauh.
sumber
sed -i 's@git://github@https://github@' .git/config
.Opsi lain yang tidak melibatkan menyentuh konfigurasi git adalah mengubah pengaturan ssh untuk menggunakan port 443 alih-alih port 22 biasa.
Referensi: Menggunakan SSH melalui port HTTPS
Dari artikel itu:
Setelah itu, saya berhasil melakukan push to Github. Di rumah Anda dapat mengubah kembali ssh config ke cara itu jika Anda mau.
sumber
Saya juga mengalami masalah yang sama untuk sementara waktu. Kemudian saya mencoba mengubah git config menggunakan perintah yang disarankan:
yang sayangnya tidak melakukan trik untuk saya . Saya masih mengalami masalah yang sama!
Apa yang sebenarnya memecahkan masalah saya akhirnya adalah, saya telah mengatur ulang url jarak jauh dari repositori saya lagi menggunakan perintah berikut:
yang sebelumnya seperti ini:
Setelah mengatur url jauh menggunakan
https://
bukan[email protected]
masalah diselesaikan untuk saya.sumber
Memperluas jawaban Nathan di atas, Anda juga dapat mencoba protokol ssh jika firewall perusahaan Anda mengganggu https. Dalam kasus saya, firewall memblokir protokol git, menerbitkan kembali sertifikat ssl untuk https dan ini melanggar bower untuk saya, bahkan dengan opsi ketat-ssl dimatikan. Anda dapat melakukan penulisan ulang url yang serupa untuk ssh, dan membuat kunci / pasangan ssh seperti yang dijelaskan pada github .
Anda juga harus mengaktifkan ssh-agent untuk menginstal git Anda.
sumber
itu karena alamat GIT untuk server simpul telah berubah, Anda harus masuk sekarang:
git clone https://github.com/joyent/node
semoga berhasil
sumber
pengantar
Saya akan menambahkan di sini pendekatan saya sendiri ( yang tidak diperlukan jika Anda memiliki repositori git yang dapat diakses publik yang mendukung https ).
Saya bekerja di sebuah perusahaan di mana repositori git hanya dapat diakses dari dalam perusahaan. Tapi saya juga bekerja dari rumah.
Bagaimana cara mendorong ke repositori perusahaan dari rumah?
Saya telah membuat repositori dengan folder di google drive saya. Kecuali untuk git, dan https, Anda dapat memasukkan repositori sebagai path.
Jadi, alih-alih mendorong ke asal, saya mendorong ke "gDrive". Ini menyebabkan folder untuk disinkronkan dari workstation rumah saya ke google drive, dan kemudian komputer kerja saya menarik perubahan. Selain itu, karena terkadang file dalam direktori ".git" tidak selaras, saya mengganti nama folder untuk sementara dari mis. "Trunk" menjadi "trunk2". Ini memaksa komputer di rumah dan di kantor untuk 100% disinkronkan dengan google drive.
Saya kemudian masuk ke komputer kerja saya baik melalui remote checkpoint-vpn (atau teamviewer) dan mendorong pembaruan saya ke repositori work git.
Selain itu, proses akan bekerja sebaliknya untuk mendorong ke repositori git di luar perusahaan yang diblokir.
sumber