Git commit over SSH не распознает удаленный репозиторий

2

У меня есть 2 машины, клиент и сервер. Я хочу отправлять git-репозитории с клиента на сервер, используя удаленную передачу. Я выполнил эти команды в следующем порядке на сервере:

mkdir /mnt && cd /mnt
mkdir test.git && cd test.git
sudo git init --bare

Я выполнил эти команды на клиенте:

mkdir /mnt && cd /mnt
mkdir test.git && cd test.git
sudo git init
sudo git remote add testy ssh://user@server/mnt/test.git
sudo vim testing.txt
sudo git add testing.txt
sudo git commit -m "testing"
sudo git push testy master

Это приводит к ошибке на клиентском компьютере: fatal: '/mnt/test.git' does not appear to be a git repository. fatal: The remote end hung up unexpectedly.

Есть несколько похожих вопросов, но ни один из них не решает мою проблему. Я пробовал их решения дословно, но безуспешно. Это не дубликат, потому что эти ответы не решают проблему. Любые предложения, чтобы исправить эти проблемы?

MeesterTeem
источник
вам не хватает : делитель между хостом и путем в sudo git remote add testy ssh://user@server:/mnt/test.git
Jakuje
ты полностью злоупотребляешь sudo, эффективно нарушая все разрешения (и не замечая, потому что вы переопределяете их). вам следует только использование sudo для команд, которые требуют специальных привилегий (например, создание каталога /mnt/test.git ); на самом деле, в вашем примере каждое использование sudo является ненужным и, следовательно, скорее всего, плохо.
umläute
Если я поставлю двоеточие так, чтобы у меня было sudo git remote add testy ssh://user@server:/mnt/test.git я получаю ошибку: hostname server:: cannot be resolved,
MeesterTeem

Ответы:

1

Я бы догадался user@server не имеет права на чтение / запись / выполнение /mnt/test.git:

$ sudo sh -c 'cd $(mktemp -d) && git init --bare'
Initialized empty Git repository in /tmp/tmp.TNLcXTZQcN/
$ cd $(mktemp -d)
$ git remote add /tmp/tmp.TNLcXTZQcN
fatal: Not a git repository (or any parent up to mount point /tmp)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
l0b0
источник
я использовал chown предоставить пользователю доступ к каталогу. Теперь я получаю: fatal: not a git repository (or any of the parent directories) : .git Есть еще предложения?
MeesterTeem
Запустите chown рекурсивно, чтобы убедиться, что пользователь может читать / записывать все необходимые файлы: sudo chown -R user /mnt/test.git,
umläute
Я наконец получил все, где был принят толчок, но файл, который я добавил в качестве теста, похоже, не отправляется. Это вероятно все еще проблема с разрешениями на запись?
MeesterTeem
@MeesterTeem Пустой репозиторий по определению не имеет извлеченных копий файлов, если вы это имеете в виду.
l0b0
Кажется, тогда возникает большая проблема ... голое хранилище не проверяет файлы, поэтому вы не можете загружать в него содержимое. У непроигранного репо проверена ветка master, так что вы тоже не можете его подтолкнуть! Какой в ​​этом смысл? И почему каждое руководство по настройке удаленного развертывания файлов использует пустое, если они не могут получить файлы?
MeesterTeem