'receive-pack': служба не включена для './.git' - PullRequest
47 голосов
/ 27 апреля 2009

(уже решено, я пишу это для следующего парня)

Я запускал git daemon на одном компьютере и пытался синхронизироваться с другим.

На компьютере А я запустил:

git daemon --reuseaddr --base-path=. --export-all --verbose

На компьютере B я запустил:

git clone git://computerA/.git source # worked
cd source
git pull # worked
git push # failed with "fatal: The remote end hung up unexpectedly"

На компьютере A вывод демона:

[5596] Connection from 127.0.0.1:2476
[5596] Extended attributes (16 bytes) exist <host=localhost>
[5596] Request receive-pack for '/.git'
[5596] 'receive-pack': service not enabled for './.git'
[5444] [5596] Disconnected (with error)

Я собираюсь опубликовать информацию, которую нашел. Если у вас есть более полный ответ, пожалуйста, добавьте его.

Ответы [ 3 ]

56 голосов
/ 27 апреля 2009

Просто запустите

git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack

(на компьютере A вместо исходной команды git daemon), и push работает.

Обратите внимание, что вам нужно запустить

git reset --hard

на компьютере A, чтобы он "увидел" изменения с компьютера B.

Post Script

Проблема с выполнением аппаратного сброса заключается в том, что он перезаписывает все локальные изменения, которые были у вас на компьютере A.

В конце концов я понял, что было бы гораздо разумнее иметь отдельный репозиторий ( голый клон ), в котором нет файлов, а затем подключить к нему компьютер B и компьютер A от Это. Таким образом, он может работать в обоих направлениях и плавно объединять все изменения. Вы даже можете иметь двух голых клонов, по одному на каждом компьютере, и двухтактных между ними.

20 голосов
/ 22 августа 2011

Я столкнулся с этой ошибкой, но решение кажется другим для тех, кто использует git-http-backend. (git push / pull / clone через http вместо ssh или git)

Это должно быть сделано на удаленном сервере, и лучше всего это делать при создании. (последняя строка может быть запущена независимо, если репо уже существует / используется)

$ mkdir eddies  # MAKE folder for repo
$ chown -R eddie:websrv eddies/  #ensure apache (webserver) can access it
$ cd eddies/
$ git --bare init --shared
Initialized empty shared Git repository in /var/git/eddies/
$ ls
branches  config  description  HEAD  hooks  info  objects  refs
$ git config --file config http.receivepack true
4 голосов
/ 31 мая 2014

У меня есть проблема с git reset --hard, так что вот мое альтернативное решение.

На локальном клонированном репо сделайте ветку

git checkout -b my_new_branch

в репозитории удаленного источника включите службу receive-pack

git daemon --reuseaddr --base-path=. --export-all --verbose --enable=receive-pack

выдвинуть новую ветку к удаленному источнику

git push origin my_new_branch

объединить новую ветку в источнике с

git merge my_new_branch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...