Saya telah menggunakan git untuk menyimpan dua salinan proyek saya dalam sinkronisasi, satu adalah kotak lokal saya, yang lain server uji. Ini adalah masalah yang terjadi ketika saya masuk ke server pengembangan jarak jauh kami menggunakan ssh;
git clone [email protected]:/home/chris/myproject
Initialized empty Git repository in /tmp/myproject/.git/
Password:
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
fetch-pack from '[email protected]:/home/chris/myproject' failed.
(nama-file telah diubah untuk melindungi yang bersalah ...!)
Kedua kotak menjalankan Solaris 10 AMD. Saya telah melakukan beberapa penggalian, jika saya menambahkan --upload-pack=$(which git-upload-pack)
perintah berfungsi, (dan membuktikan bahwa $PATH
berisi path ke 'git-upload-pack' sesuai solusi RTFM) tetapi ini benar-benar menjengkelkan, ditambah 'git push' tidak berfungsi, karena saya tidak berpikir ada --unpack=
pilihan.
Kebetulan, semua perintah git bekerja dengan baik dari kotak lokal saya, itu adalah versi yang sama dari perangkat lunak (1.5.4.2), diinstal pada NFS mount yang sama di /usr/local/bin
.
Adakah yang bisa membantu?
sumber
/opt/local/bin
. Menambahkan ini ke.bashrc
via sayaPATH=$PATH:/new/path/here
berfungsi untuk saya."ssh .. echo \$PATH"
perintah akan menunjukkan jalan pada mesin remote, yang mungkin berbeda dengan jalur login Anda, tapi ini adalah hal penting untuk mendapatkan hak untuk membuatnya bekerja, dan Anda dapat melakukannya dengan menetapkan PATH untuk memasukkan git di.bashrc
atas mesin jarak jauh. Menurut halaman manual,.profile
/.bash_profile
hanya dibaca untuk login interaktif.Anda juga dapat menggunakan opsi "-u" untuk menentukan lintasan. Saya menemukan ini membantu pada mesin di mana. Bashrc saya tidak bersumber di sesi non-interaktif. Sebagai contoh,
sumber
Berdasarkan jawaban Brian , jalur unggah-paket dapat ditetapkan secara permanen dengan menjalankan perintah berikut setelah kloning, yang menghilangkan kebutuhan untuk
--upload-pack
permintaan tarik / pengambilan berikutnya. Demikian pula, pengaturan paket terima menghilangkan kebutuhan untuk--receive-pack
permintaan push.Kedua perintah ini setara dengan menambahkan baris berikut ke repo
.git/config
.Pengguna yang sering
clone -u
dapat tertarik dengan alias berikut ini. myclone harus jelas. myfetch / mypull / mypush dapat digunakan pada repo yang konfigurasinya belum dimodifikasi seperti dijelaskan di atas dengan menggantigit push
dengangit mypush
, dan seterusnya.sumber
--receive-pack
opsi untukgit-push
!git push --receive-pack /full/path/to/git-receive-pack
sendiri, atur sampai berhasil, kemudian modifikasi .git / config (atau jalankan "git config") untuk secara permanen mengatur jalur paket-terima.Saya menemukan dan menggunakan (berhasil) perbaikan ini:
Terima kasih kepada Paul Johnston .
sumber
Mac OS X dan beberapa Unix lainnya setidaknya memiliki jalur pengguna dikompilasi ke sshd untuk alasan keamanan sehingga kita yang menginstal git sebagai / usr / local / git / {bin, lib, ...} dapat mengalami masalah seperti git executable tidak dalam jalur yang dikompilasi. Untuk menimpanya, saya lebih suka mengedit / etc / sshd_config saya yang berubah:
untuk
dan kemudian buat file ~ / .ssh / environment sesuai kebutuhan. Pengguna git saya memiliki yang berikut di file ~ / .ssh / environment mereka:
Catatan ekspansi variabel tidak terjadi ketika file ~ / .ssh / environment dibaca jadi:
tidak akan berfungsi.
sumber
Solusi Matt tidak bekerja untuk saya di OS X, tetapi Paul berhasil.
Versi singkat dari tautan Paul adalah:
Dibuat
/usr/local/bin/ssh_session
dengan teks berikut:Menjalankan:
Tambahkan yang berikut ke
/etc/sshd_config
:sumber
Untuk bash, perlu dimasukkan ke .bashrc bukan .bash_profile (.bash_profile juga hanya untuk shell login).
sumber
Saya mendapat kesalahan ini dengan versi MsysGit.
Setelah mengikuti semua saran yang bisa saya temukan di sini dan di tempat lain, saya akhirnya:
di server (Win XP dengan Cygwin SSHD), ini akhirnya memperbaikinya.
Saya masih menggunakan sisi klien versi MsysGit
Saya menduga beberapa pekerjaan masih diperlukan sisi penggunaan Git ini .. (ssh + kemudahan tarik / push di Windows)
sumber
Seperti yang ditunjukkan Johan berkali-kali .bashrc yang dibutuhkan:
ln -s .bash_profile .bashrc
sumber
Anda harus menambahkan
sebelum baris ini di .bashrc:
Kalau tidak, semua pernyataan ekspor tidak akan dieksekusi ( lihat di sini ).
sumber
Kasing saya ada di Win 10 dengan GIT bash dan saya tidak punya GIT di bawah lokasi standar. Sebaliknya saya memiliki git di / app / local / bin. Saya menggunakan perintah yang disediakan oleh @Garrett tetapi perlu mengubah path untuk memulai dengan double /:
Kalau tidak, GIT akan menambahkan jalur Windows GIT Anda di depan.
sumber
Untuk zsh Anda harus memasukkannya ke file ini: ~ / .zshenv
Misalnya, pada OS X menggunakan paket git-core dari MacPorts:
$ echo 'export PATH = / opt / local / sbin: / opt / local / bin: $ PATH'> ~ / .zshenv
sumber
Saya mengalami masalah saat menyambung ke repo Gitolite menggunakan SSH dari Windows dan ternyata masalah saya adalah PLINK! Itu terus meminta saya untuk kata sandi, tetapi ssh gitolite @ [host] akan mengembalikan daftar repo.
Periksa variabel lingkungan Anda: GIT_SSH. Jika disetel ke Plink, cobalah tanpa nilai apa pun ("set GIT_SSH =") dan lihat apakah itu berfungsi.
sumber
Tambahkan lokasi Anda
git-upload-pack
ke file .bashrc pengguna git jarak jauh.sumber
Mungkin sesederhana menginstal git pada host jarak jauh (seperti dalam kasus saya).
Atau setara dengan sistem manajemen paket lainnya.
sumber