Подтвердить что ты не робот

Git нажмите результаты в фатальном режиме: ошибка протокола: символ длины строки: это

Я пытаюсь заставить GitLab работать на моем сервере (работает CentOS 6.5). Я следил за gitlab-receipe в строке, но я просто не могу заставить его работать. Я могу получить доступ к веб-интерфейсу, создавать новые проекты, но нажатие на главный ветвь возвращает следующую ошибку:

fatal: protocol error: bad line length character: This

Я выполнил проверки производственной среды, вот результаты:

Checking Environment ...

Git configured for git user? ... yes

Checking Environment ... Finished

Checking GitLab Shell ...

GitLab Shell version >= 1.7.9 ? ... OK (1.8.0)
Repo base directory exists? ... yes
Repo base directory is a symlink? ... no
Repo base owned by git:git? ... yes
Repo base access is drwxrws---? ... yes
update hook up-to-date? ... yes
update hooks in repos are links: ... 
ASC / Wiki ... repository is empty
Running /home/git/gitlab-shell/bin/check
Check GitLab API access: OK
Check directories and files: 
    /home/git/repositories: OK
    /home/git/.ssh/authorized_keys: OK
Test redis-cli executable: redis-cli 2.4.10
Send ping to redis server: PONG
gitlab-shell self-check successful

Checking GitLab Shell ... Finished

Checking Sidekiq ...

Running? ... yes
Number of Sidekiq processes ... 1

Checking Sidekiq ... Finished

Checking LDAP ...

LDAP is disabled in config/gitlab.yml

Checking LDAP ... Finished

Checking GitLab ...

Database config exists? ... yes
Database is SQLite ... no
All migrations up? ... yes
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Init script exists? ... yes
Init script up-to-date? ... no
  Try fixing it:
  Redownload the init script
  For more information see:
  doc/install/installation.md in section "Install Init Script"
  Please fix the error above and rerun the checks.
projects have namespace: ... 
ASC / Wiki ... yes
Projects have satellites? ... 
ASC / Wiki ... can't create, repository is empty
Redis version >= 2.0.0? ... yes
Your git bin path is "/usr/bin/git"
Git version >= 1.7.10 ? ... yes (1.8.3)

Checking GitLab ... Finished

Для ошибки init script в квитанции указано

Не обращайте внимания на эту ошибку, если вы уверены, что скачали обновленный

так как я загрузил последнюю версию, я не могу этого сделать.

Я пробивал себе голову на прошлой неделе и не могу понять, почему эта ошибка происходит, любая помощь была бы оценена!!

4b9b3361

Ответ 1

Если у кого-то еще есть эта проблема, решение заключается в изменении оболочки входа пользователя "git" (или любого другого, на который вызывается ваш пользователь) до /bin/bash. Это можно сделать с помощью команды: usermod -s /bin/bash git (Ссылка). Причина изменения оболочки входа заключается в том, что оболочка по умолчанию для пользователя git /sbin/nologin (или аналогичная, в зависимости от среды), которая запрещает приложению git при входе в систему как пользователь git на git.

Ответ 2

Просто для ссылки других пользователей:

fatal: protocol error: bad line length character: no s
can be a truncated answer for "No such project".

Как и в моем случае, эта ошибка может быть исправлена ​​путем добавления пользователя (даже самого себя) к проекту в gitlab:

https://gitlab.com/username/your_project/project_members

также убедитесь, что ваш открытый ключ установлен в вашем пользователе Profile settings > SSH Key or in Project > Settings > Deploy Keys

https://gitlab.com/profile/keys

Ответ 3

Еще одна вещь, которую нужно проверить, это то, что ваш .bashrc не печатает лишние вещи. Например, "echo" hello "в .bashrc создает ошибку:

[email protected]:~/malt$ ssh snake01
Last login: Tue Oct 21 10:44:31 2014 from 138.15.166.103
hello
...
[email protected]:/net/snake01/usr/hydra/kruus/malt$ git pull
fatal: protocol error: bad line length character: hell

Обратите внимание на то, что поздоровался с одной из проблем.

Удаление приветствия "echo" из моего .bashrc позволяет git работать так, как ожидалось. Возможно, вам понадобится " > &/dev/null", чтобы удалить вывод, если ваш .bashrc выполняет более сложные действия.

Ответ 4

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

Я делал это дважды за последние два дня. Я добавил удаленный и с ошибкой, и я ошибся при создании проекта на GitLab.

В обоих случаях, когда я пытался нажать на пульт, я получил

fatal: protocol error: bad line length character: No s

Итак, проверьте правильность написания!

Кроме того, если вы создаете проект под другим именем (например, группой), убедитесь, что удаленный файл добавлен.

Ответ 5

Решение моей проблемы состояло в том, что я забыл добавить ключ развертывания для проекта (для пользователя, которого я пытался развернуть как).

Добавление ключа развертывания в https://gitlab/group/project/deploy_keys отсортировало меня.

Ответ 6

Вы можете получить фактическое сообщение об ошибке, выполнив:

ssh [email protected] "git-upload-pack yournamespace/yourreponame.git"

Согласно этой документации git протокол git ожидает в начале каждой строки свой размер, а затем содержимое. Похоже, GitLab этого не делает и отправляет сообщение об ошибке напрямую.

Ответ 7

sudo gitlab-ctl reconfigure

а затем

sudo gitlab-ctl restart

должен сделать трюк

Ответ 8

Сегодня я столкнулся с этим сообщением об ошибке ( "Нет" ), и на самом деле это было связано с тем, что я не имел права нажимать на целевой репозиторий. Несмотря на то, что сообщение об ошибке очень странно, это может помочь людям продолжать работать.

Мы используем Gitlab.

Ответ 9

В моем случае (private key over ~/.ssh/config) мне пришлось оставить часть ssh в:

git clone ssh://[email protected]:username/repository.git

Он работал с:

git clone [email protected]:username/repository.git

Сообщение об ошибке:

фатальный: ошибка протокола: символ длины строки: нет s

Ответ 10

В моем случае мое имя пользователя было изменено, и этот репозиторий git config не был обновлен в соответствии с новым именем.

Проверьте свои пульты git, чтобы убедиться, что они указывают на правильное место:

git remote -v

Обновите конфигурацию, вручную отредактировав конфигурацию:

vim .git/config

или с помощью команд

git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git

Ответ 11

Добавление моего опыта в этот уже длинный список возможных решений.

В моем случае у меня был доступ к клонированному репо, но не доступ к каким-либо другим внутренним репозиториям package.json имел в виду зависимости или devDependencies. Таким образом, решение также получало доступ к этим репозиториям.

Ответ 12

У меня была такая же проблема, и выяснилось, что я работал над ветвью git. Все, что мне нужно было сделать, это нажать на мастера.

$ git push <remote> <local branch name>:<remote branch to push into>

Ответ 13

Моя ошибка: fatal: protocol error: bad line length character: No s

Это было вызвано тем, что я забыл указать SCM-тег в pom.xml моего Maven-проекта, поэтому вместо него использовалась информация SCM из родительского проекта. Мне также пришлось добавить нашего пользователя Jenkins в проект в GitLab.

Ответ 14

измените оболочку git

usermod -s /usr/bin/git-shell git

Ответ 15

Просто добавив возможное решение другим в мою ситуацию. В моем случае я пытался нажать тег.

git push heroku MYTAG:master

Только когда я разыменовал тег, с которым он работал

git push heroku MYTAG^{}:master

Подробнее об этом можно прочитать здесь: Что означает ^ {} в git?

<rev>^{}, e.g. v0.99.8^{}

Суффикс ^, за которым следует пустая пара скобок, означает, что объект может быть тегом, и разыгрывать тег рекурсивно до тех пор, пока не будет найден объект без тегов.

Ответ 16

Когда я хотел выдвинуть свои коммиты, я получил эту ошибку:

fatal: protocol error: bad line length character: No s

Я решил это только с помощью проверки соединения ssh:

ssh [email protected]

Ответ 17

Решение для меня состояло в том, чтобы отключить переменную env GIT_SSH, которая указывала на putty (plink.exe)

Ответ 18

Имел ту же проблему, в моем случае исходное репо было перемещено, изменение .git/config решило мою проблему.

Ответ 19

В моем случае эта ошибка была исправлена изменением оболочки git-user на git-shell с помощью chsh:

chsh -s $(command -v git-shell) git

Официальный git-shell документации. В целях безопасности настоятельно рекомендуется использовать эту оболочку для пользователя git на сервере удаленного хранилища.

Ответ 20

В моем случае я наблюдал эту ошибку только в "SSH Extensions" для Windows.

Эта же команда работает из командной строки. Я переключил настройку SSH с PuTTY на OpenSSH, и он перестал генерировать ошибку.