Если в удаленной системе нет Git в системном PATH по умолчанию (который, вероятно, отличается от PATH в вашей оболочке входа в систему), то вы должны указать ему, где найти git-receive-pack .
Вы упомянули путь /usr/local/git/bin/git-receive-pack
, поэтому попробуйте это:
git push --receive-pack=/usr/local/git/bin/git-receive-pack ssh://user@machine1:/try-git master
Путь, указанный в --receive-pack=
, является путем к git-receive-pack в удаленной системе.
Вы можете сохранить путь git-receive-pack как часть «удаленного», чтобы сохранить набор текста, если вы планируете обращаться к этому хранилищу много раз:
git remote add machine1 ssh://user@machine1:/try-git
git config remote.machine1.receivepack /usr/local/git/bin/git-receive-pack
git config remote.machine1.uploadpack /usr/local/git/bin/git-upload-pack
Используйте его следующим образом:
git push machine1 master
Переменная конфигурации remote.<remote-name>.uploadpack
устраняет необходимость в опции --upload-pack=
для git fetch
(и git pull
) так же, какremote.<remote-name>.receivepack
избавляет от необходимости указывать --receive-pack=
с помощью git push
.
В вашем конкретном сценарии вы перемещаетесь в не-пустой репозиторий.Вы также, вероятно, нажимаете на извлеченную ветвь (нажимая master
на машине2 до master
на машине1).Современные версии Git выдают ошибку при попытке сделать это.Вы можете переопределить предупреждение, установив определенные переменные конфигурации, но обычно это не лучший способ работы.