web-dev-qa-db-ja.com

Gitプッシュの結果、致命的:プロトコルエラー:行の長さが正しくない文字:これ

サーバーでGitLabを動作させようとしています(CentOS 6.5を実行しています)。 gitlab-receipe に従って行に進みましたが、うまくいきません。 Webインターフェイスにアクセスして新しいプロジェクトを作成できますが、masterブランチにプッシュすると次のエラーが返されます。

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

初期化スクリプトエラーの場合、領収書には

最新のものをダウンロードしたことが確実な場合は、そのエラーを気にしないでください

だから、最新のものをダウンロードしたので、私はそれについてあまりすることができません。

私はこの1週間、頭を叩いてきましたが、このエラーが発生している理由を理解できません。

37
user3404044

他の誰かがこの問題を抱えている場合、解決策は、ユーザー「git」のログインシェル(またはユーザーの名前)を/bin/bashに変更することです。これは、コマンドusermod -s /bin/bash gitLink )で実行できます。ログインシェルを変更する理由は、gitユーザーのデフォルトシェルが/sbin/nologin(または環境に応じて類似)であり、これによりgitアプリケーションがgitサーバーにgitユーザーとしてログインできないためです。

35
Argilium

他のユーザーの参照用:

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

20
einverne

もう1つ確認することは、.bashrcが余分なものを出力しないことです。たとえば、.bashrcの 'echo "hello"'はエラーを作成します。

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

Helloと言うと問題が発生することに注意してください。

.bashrcから 'echo "hello"'を削除すると、gitは再び期待どおりに動作します。 .bashrcがより複雑な処理を行う場合、出力を削除するには ">&/ dev/null"が必要になる場合があります。

12
Erik Kruus

別の可能性として、リポジトリ名のスペルを間違えている可能性があります。

過去2日間で2回やった。リモートを追加し、スペルを間違えました。GitLabでプロジェクトを作成するときに名前のスペルを間違えました。

どちらの場合も、リモートにプッシュしようとすると、

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

だからそのスペルをチェックしてください!

また、プロジェクトを別の名前(グループなど)で作成する場合は、それが追加するリモートであることを確認してください。

4
dsc

以下を実行することで、実際のエラーメッセージを取得できます。

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

このgitドキュメント によると、gitプロトコルは、各行の先頭でサイズとコンテンツを想定しています。 GitLabはそれを行わず、エラーメッセージを直接送信するようです。

4
Borja Aparicio

これに関する私の問題の解決策は、プロジェクトの展開キーを追加するのを忘れていたということです(私が展開しようとしているユーザーの場合)。

https:// gitlab/group/project/deploy_keys にデプロイキーを追加すると、整理されました。

4
Gavin Gilmour

今日、このエラーメッセージ( "No s")を経験しましたが、実際には、対象となるリポジトリにプッシュする権限がないことに関係していました。エラーメッセージは非常に奇妙ですが、これは人々が働き続けるのに役立つかもしれません。

Gitlabを使用します。

2
sjorsvb
Sudo gitlab-ctl reconfigure

その後

Sudo gitlab-ctl restart

トリックを行う必要があります

2
mytydev

私の場合、ユーザー名が変更され、このリポジトリのgit configは新しい名前に一致するように更新されませんでした。

Gitリモートをチェックして、正しい場所を指していることを確認します。

git remote -v

構成を手動で編集して構成を更新します。

vim .git/config

またはコマンドを使用して

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

1
Chase Coney

私の場合(〜/ .ssh/config上のプライベートキー)、sshの部分を省く必要がありました。

git clone ssh://git@hostname:username/repository.git

それは働いた:

git clone git@hostname:username/repository.git

エラーメッセージ:

致命的:プロトコルエラー:行の長さが正しくない文字:s

1
hellcode

gitのシェルを変更する

usermod -s /usr/bin/git-Shell git
0
hqlulu

これと同じ問題があり、gitブランチで作業していることがわかりました。マスターにプッシュするだけでした。

$ git Push <remote> <local branch name>:<remote branch to Push into>
0
virulant

私の場合、Originリポジトリが移動されていたのと同じ問題がありました。git/ configを変更すると問題が解決しました。

0
Rui Moreira

私の場合、Windowsの「SSH拡張機能」でのみこのエラーが発生していました。

同じコマンドがコマンドラインから機能しました。 SSH設定をPuTTYからOpenSSHに切り替えたところ、エラーの生成が停止しました。

0
Sergei G

私の場合、そのエラーは、リモートのgit-userシェルをchshを使用してgit-Shellに変更することで修正されました。

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

公式git-Shellドキュメント 。セキュリティ上の理由から、リモートリポジトリサーバーでgit-userにこのシェルを使用することを強くお勧めします。

0

コミットをプッシュしたいときに、次のエラーが表示されました。

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

私はこれをssh接続チェックだけで解決しました:

ssh Git@hostIp
0
HoGiggle

私のエラーは:fatal: protocol error: bad line length character: No s

これは、Mavenプロジェクトのpom.xmlでSCMタグを指定するのを忘れていたため、代わりに親プロジェクトのSCM情報を使用したためです。また、JenkinsユーザーをGitLabのプロジェクトに追加する必要がありました。

0
Stephanie

私にとっての解決策は、PuTTY(plink.exe)を指していたGIT_SSH env変数を設定解除することでした

0
franssu

すでに長い解決策のリストに私の経験を追加します。

私の場合、複製したリポジトリにはアクセスできましたが、他の内部リポジトリにはアクセスできませんでしたpackage.jsonは、依存関係またはdevDependenciesと呼ばれていました。そのため、ソリューションはこれらのリポジトリにもアクセスできました。

0
Nobita

Windowsでの私のソリューションは、.git/configで接続をSSHに切り替えることでした。

[リモート "Origin"] url = [email protected]

ここで説明したように:

https://help.github.com/en/articles/changing-a-remotes-url

0
Dreamfish

私の状況で他の人に可能な解決策を追加するだけです。私の場合、タグをプッシュしようとしていました。

git Push heroku MYTAG:master

それが機能するのは、タグを間接参照するまでではありませんでした

git Push heroku MYTAG^{}:master

詳しくはこちらをご覧ください: gitで^ {}はどういう意味ですか?

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

サフィックス^の後に空のブレースペアが続くことは、オブジェクトがタグであり、非タグオブジェクトが見つかるまで再帰的にタグを逆参照できることを意味します。

0
sebastianr