Używałem git do synchronizowania dwóch kopii mojego projektu, jedna to moje lokalne pudełko, a druga serwer testowy. Jest to problem, który pojawia się, gdy loguję się na nasz zdalny serwer programistyczny przy użyciu 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.
(nazwy plików zostały zmienione, aby chronić winnych ...!)
Oba komputery działają pod kontrolą systemu Solaris 10 AMD. Zrobiłem trochę kopania, jeśli dodam --upload-pack=$(which git-upload-pack)
polecenie działa (i udowodni, że $PATH
zawiera ścieżkę do `` git-upload-pack '' zgodnie z rozwiązaniem RTFM), ale jest to naprawdę denerwujące, a `` git push '' nie działa, ponieważ nie sądzę, że istnieje --unpack=
opcja.
Nawiasem mówiąc, wszystkie polecenia git działają dobrze z mojego lokalnego pudełka, jest to ta sama wersja oprogramowania (1.5.4.2), zainstalowana na tym samym montowaniu NFS w /usr/local/bin
.
Czy ktoś może pomóc?
źródło
/opt/local/bin
. Dodanie tego do mojego.bashrc
viaPATH=$PATH:/new/path/here
działało dla mnie."ssh .. echo \$PATH"
Komenda pokaże ścieżkę na zdalnej maszynie, która może być różna na swojej ścieżce logowania, ale to jest kluczowa sprawa, aby uzyskać prawo, aby to działało, i można to zrobić poprzez ustawienie PATH do obejmują git w.bashrc
sprawie zdalna maszyna. Zgodnie ze stroną podręcznika.profile
/.bash_profile
są odczytywane tylko w przypadku logowania interaktywnego.Możesz także użyć opcji „-u”, aby określić ścieżkę. Uważam to za pomocne na maszynach, na których mój .bashrc nie jest pozyskiwany w sesjach nieinteraktywnych. Na przykład,
źródło
Opierając się na odpowiedzi Briana , ścieżkę wysyłania pakietu można ustawić na stałe, uruchamiając następujące polecenia po klonowaniu, co eliminuje potrzebę
--upload-pack
kolejnych żądań ściągania / pobierania. Podobnie ustawienie pakietu odbioru eliminuje potrzebę--receive-pack
wysyłania żądań.Te dwa polecenia są równoważne dodaniu następujących wierszy do repozytorium
.git/config
.Częstych użytkowników
clone -u
mogą zainteresować następujące aliasy. myklon nie wymaga wyjaśnień. myfetch / mypull / mypush można używać w repozytoriach, których konfiguracja nie została zmodyfikowana, jak opisano powyżej, zastępującgit push
jągit mypush
i tak dalej.źródło
--receive-pack
opcjigit-push
!git push --receive-pack /full/path/to/git-receive-pack
samodzielnie, poprawiaj, aż się powiedzie, a następnie zmodyfikuj plik .git / config (lub uruchom „git config”), aby na stałe ustawić ścieżkę pakietu odbiorczego.Znalazłem i użyłem (pomyślnie) tej poprawki:
Dzięki Paulowi Johnstonowi .
źródło
Mac OS X i niektóre inne Uniksy mają przynajmniej skompilowaną ścieżkę użytkownika do sshd ze względów bezpieczeństwa, więc ci z nas, którzy instalują git jako / usr / local / git / {bin, lib, ...} mogą wpaść w kłopoty, ponieważ git Pliki wykonywalne nie znajdują się w prekompilowanej ścieżce. Aby to zmienić, wolę edytować zmiany w / etc / sshd_config:
do
a następnie utwórz pliki ~ / .ssh / środowiska według potrzeb. Moi użytkownicy git mają w swoim pliku ~ / .ssh / środowiska następujące informacje:
Uwaga: rozwijanie zmiennych nie występuje, gdy czytany jest plik ~ / .ssh / środowiska, więc:
nie będzie działać.
źródło
Rozwiązanie Matta nie działało dla mnie na OS X, ale Paul tak.
Krótka wersja z linku Pawła to:
Utworzono
/usr/local/bin/ssh_session
z następującym tekstem:Wykonać:
Dodaj następujące elementy do
/etc/sshd_config
:źródło
W przypadku basha należy go umieścić w .bashrc, a nie .bash_profile (.bash_profile jest również przeznaczony tylko dla powłok logowania).
źródło
Otrzymałem te błędy w wersji MsysGit.
Po wykonaniu wszystkich rad, które mogłem znaleźć tutaj i gdzie indziej, skończyłem:
na serwerze (Win XP z Cygwin SSHD), ostatecznie to naprawiło.
Nadal używam po stronie klienta wersji MsysGit
Podejrzewam, że po tej stronie Gita nadal potrzeba trochę pracy. (Ssh + łatwość ściągania / wypychania w Windows)
źródło
Jak Johan wielokrotnie wskazywał, że potrzebny jest plik .bashrc:
ln -s .bash_profile .bashrc
źródło
Musisz dodać
przed tą linią w .bashrc:
W przeciwnym razie wszystkie wyciągi eksportowe nie zostaną wykonane ( patrz tutaj ).
źródło
Mój przypadek dotyczy Win 10 z GIT bash i nie mam GIT w standardowej lokalizacji. Zamiast tego mam git w / app / local / bin. Użyłem poleceń dostarczonych przez @Garrett, ale muszę zmienić ścieżkę, aby rozpocząć od double /:
W przeciwnym razie GIT doda twoją ścieżkę Windows GIT na początku.
źródło
W przypadku zsh musisz umieścić go w tym pliku: ~ / .zshenv
Na przykład w systemie OS X przy użyciu pakietu git-core z MacPorts:
$ echo 'export PATH = / opt / local / sbin: / opt / local / bin: $ PATH'> ~ / .zshenv
źródło
Miałem problemy z połączeniem się z repozytorium Gitolite za pomocą SSH z Windows i okazało się, że moim problemem był PLINK! Ciągle pytał mnie o hasło, ale ssh gitolite @ [host] zwróciłby listę repozytoriów w porządku.
Sprawdź zmienną środowiskową: GIT_SSH. Jeśli jest ustawiony na Plink, wypróbuj go bez żadnej wartości („set GIT_SSH =”) i zobacz, czy to działa.
źródło
Dodaj lokalizację swojego
git-upload-pack
do pliku .bashrc zdalnego użytkownika git.źródło
Może to być tak proste, jak zainstalowanie gita na zdalnym hoście (tak jak to było w moim przypadku).
Lub odpowiednik dla innych systemów zarządzania pakietami.
źródło