programing

git-upload-pack: 명령을 찾을 수 없음, 원격 Gitrepo 복제 시

megabox 2023. 7. 18. 21:39
반응형

git-upload-pack: 명령을 찾을 수 없음, 원격 Gitrepo 복제 시

Git을 사용하여 프로젝트의 두 복사본을 동기화했습니다. 하나는 로컬 박스이고 다른 하나는 테스트 서버입니다.ssh를 사용하여 원격 개발 서버에 로그온할 때 발생하는 문제입니다.

git clone me@me.mydevbox.com:/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 'me@me.mydevbox.com:/home/chris/myproject' failed.

(파일 이름은 범죄자를 보호하기 위해 변경되었습니다...!)

모두 AMD를 합니다. Solaris 10 AMD를 실행합니다.제가 발굴을 좀 해봤는데요, 제가 덧붙이자면.--upload-pack=$(which git-upload-pack)명령이 작동합니다. (그리고 그것을 증명합니다.)$PATH솔루션에 '가 포함되어 ). 짜증나고, push작동하지 . RTFM이 입니다. 'git-upload-pack'은 작동하지 않습니다. 하지만 이것은 정말 짜증납니다. 게다가 'git push'는 작동하지 않습니다. 왜냐하면 저는 그것이 없다고 생각하기 때문입니다.--unpack=선택.

2)의 버전입니다. 동일한 버전의 소프트웨어.5.4.2)는 마참운고 모며든령명하입작동어상적으버다동한일가로정전로소치니된설에트프어트웨컬스에서로박▁incidentit1▁on한일▁nfs▁work NFS 참고▁box동마운▁at,버트에설치▁installed▁it소▁local된전▁the(어웨▁all입▁(▁my▁fine▁softwareit▁commands프▁the다트▁g1)▁the▁is/usr/local/bin.

누가 도와줄 수 있습니까?

ㅠㅠgit-upload-pack하지 않은 셸의 (내비그인셸경있다내습니에로로의서에퓨터컴▁(내다s▁in')▁from▁(▁is니▁machine▁it서▁on▁pathon에있습/usr/bin).

비로그인 셸에서 원격 시스템의 경로를 보려면 다음을 시도하십시오.

ssh you@remotemachine echo \$PATH

(Bash, Zsh 및 tcsh에서 작동하며, 다른 셸에서도 작동할 수 있습니다.)

반되는경다포음함디된경이 있는 되어 있지 않은 git-upload-pack당신은 그것을 에 설정함으로써 그것을 고칠 필요가 있습니다..bashrc(배시의 경우).zshenv경우), (Zsh경 우의),),.cshrc경우) 셸에 한 값입니다 (tcsh의 경우).

원격 컴퓨터에서 이 내용을 변경해야 합니다.

원격에 추가해야 할 경로를 잘 모르는 경우PATH다음 명령을 사용하여 찾을 수 있습니다(원격 컴퓨터에서 이 명령을 실행해야 함).

which git-upload-pack

인하는내기서에를 인쇄하는 내 에서./usr/bin/git-upload-pack 이 그서이경는에우래는▁so./usr/bin원격 비이동 셸에 있는지 확인해야 하는 경로입니다.PATH.

"-u" 옵션을 사용하여 경로를 지정할 수도 있습니다.대화형이 아닌 세션에서 .bashrc가 소스되지 않는 컴퓨터에서 유용합니다.예를들면,

git clone -u /home/you/bin/git-upload-pack you@machine:code

Brian의 답변을 바탕으로, 업로드 팩 경로는 복제 후 다음 명령을 실행하여 영구적으로 설정할 수 있으며, 이로 인해 다음과 같은 작업이 필요하지 않습니다.--upload-pack다음에 풀/풀 요청이 있을 수 있습니다.마찬가지로 수신 팩을 설정하면 다음과 같은 작업을 수행할 필요가 없습니다.--receive-pack요청에 따라

git config remote.origin.uploadpack /path/to/git-upload-pack
git config remote.origin.receivepack /path/to/git-receive-pack

두 의 이두명레다행음것같추과에 하는 것과 ..git/config.

[remote "origin"]
    uploadpack = /path/to/git-upload-pack
    receivepack = /path/to/git-receive-pack

의빈한사자의 clone -u이 있을 수 . 조절식이어야 . 할 수 있습니다. myfetch/mypull/mypush는 를 합니다.git push와 함께git mypush등등.

[alias]
    myclone = clone --upload-pack /path/to/git-upload-pack
    myfetch = fetch --upload-pack /path/to/git-upload-pack
    mypull  = pull --upload-pack /path/to/git-upload-pack
    mypush  = push --receive-pack /path/to/git-receive-pack

이 수정사항을 찾아서 (성공적으로) 사용했습니다.

# Fix it with symlinks in /usr/bin
$ cd /usr/bin/
$ sudo ln -s /[path/to/git]/bin/git* .

존스턴 덕분입니다.

Mac OS X 및 일부 다른 유닉스에서는 보안상의 이유로 적어도 사용자 경로가 sshd로 컴파일되어 있으므로 설치하는 사용자는 /usr/local/git/{bin,lib,...git 실행 파일이 사전 컴파일된 경로에 있지 않아 문제가 발생할 수 있습니다.이를 무시하려면 /etc/sshd_config 변경 내용을 편집합니다.

#PermitUserEnvironment no

로.

PermitUserEnvironment yes

필요에 따라 ~/.vmdk/환경 파일을 생성할 수 있습니다.mygit 사용자의 ~/.ssh/환경 파일에는 다음이 있습니다.

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin

~/.ssh/환경 파일을 읽을 때 변수가 확장되지 않습니다. 따라서:

PATH=$PATH:/usr/local/git/bin

작동하지 않습니다.

OS X에서는 Matt의 솔루션이 제게 효과가 없었지만, Paul의 솔루션은 효과가 있었습니다.

Paul's 링크의 짧은 버전은 다음과 같습니다.

되었습니다./usr/local/bin/ssh_session다음 텍스트를 사용합니다.

#!/bin/bash
export SSH_SESSION=1
if [ -z "$SSH_ORIGINAL_COMMAND" ] ; then
    export SSH_LOGIN=1
    exec login -fp "$USER"
else
    export SSH_LOGIN=
    [ -r /etc/profile ] && source /etc/profile
    [ -r ~/.profile ] && source ~/.profile
    eval exec "$SSH_ORIGINAL_COMMAND"
fi

실행:

chmod +x /usr/local/bin/ssh_session

을 항음목에 합니다./etc/sshd_config:

강제 명령 /usr/local/bin/ssh_session

bash의 경우 .bash_profile이 아닌 .bashrc(.bash_profile도 로그인 셸 전용)에 넣어야 합니다.

MsysGit 버전에서 이러한 오류가 발생했습니다.

여기와 다른 곳에서 찾을 수 있는 모든 조언을 따른 후, 저는 결국 다음과 같이 되었습니다.

Git의 Cygwin 버전 설치

서버(Win XP with Cygwin SSHD)에서 이 문제를 해결했습니다.

나는 여전히 MsysGit 버전 클라이언트 쪽을 사용합니다.

..같은 sshd 서버에서 Cygwin Git pull로 POSIX 오류가 발생하기 때문에 실제로는 이 방법밖에 없습니다.

나는 Gituse의 이쪽 측면에서 여전히 약간의 작업이 필요하다고 의심합니다.(Windows에서 ssh+끌기/밀기의 용이성)

Johan이 필요하다고 여러 번 지적했듯이 .bashrc는 다음과 같습니다.

ln -s .vms_profile .vmsrc

다음을 추가해야 합니다.

export PATH=/opt/git/bin:$PATH

.svrc의 이 줄 앞에:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

그렇지 않으면 모든 내보내기 문이 실행되지 않습니다(여기 참조).

내 케이스는 GIT bash와 함께 Win 10에 있으며 표준 위치에 GIT가 없습니다.대신 /app/local/bin 아래에 있습니다.@Garrett에서 제공한 명령을 사용했지만 double /:로 시작하도록 경로를 변경해야 합니다.

git config remote.origin.uploadpack //path/to/git-upload-pack
git config remote.origin.receivepack //path/to/git-receive-pack

그렇지 않으면 GIT가 앞에 Windows GIT 경로를 추가합니다.

원격 호스트에 git를 설치하는 것만큼 간단할 수도 있습니다(내 경우처럼).

sudo apt-get install git

또는 다른 패키지 관리 시스템에 동등한 기능을 참조하십시오.

zsh의 경우 다음 파일에 넣어야 합니다. ~/.zshenv

예를 들어 MacPorts의 git-core 패키지를 사용하는 OS X의 경우:

echo 'export PATH=/opt/local/sbin:/opt/local/bin:$PATH' > ~/.zshenv

Windows에서 SSH를 다시 사용하는 Gitolite에 연결하는 데 문제가 있었는데 알고 보니 PLINK였습니다!계속 비밀번호를 요청했지만 ssh gitolite@[host]는 보고서 목록을 정상적으로 반환합니다.

환경 변수인 GIT_SSH를 확인합니다.Plink로 설정된 경우 값("set GIT_SSH=") 없이 사용해보고 작동하는지 확인합니다.

의 위치를 추가합니다.git-upload-pack원격 git 사용자의 .tvrc 파일로 이동합니다.

GitHub Enterprise를 사용하는 경우에는 다음을 확인하십시오.public,것은 아니다.internal내부 고발을 위해 이 문제를 해결할 수 있는 다른 방법이 있을 수 있지만, 이것은 더 많은 시간과 인력을 투입하지 않고 문제를 해결할 수 있는 가장 빠른 방법이었습니다.

언급URL : https://stackoverflow.com/questions/225291/git-upload-pack-command-not-found-when-cloning-remote-git-repo

반응형