2

これはよくある質問ですが、他の質問とは特に異なります。 git ls-remote https://myuser@bitbucket.org/myser/repo.gitを発行すると、パスワードを尋ねられ、結果が返されます:

tomaz:~/ $ git ls-remote https://tcanabrava@bitbucket.org/tcanabrava/randrepo.git
Password: 
1c8cd7266ad19de952db096a0f25ee16dc3cdace        HEAD
1c8cd7266ad19de952db096a0f25ee16dc3cdace        refs/heads/master

しかし、git clone を発行すると...

tomaz:~/ $ $git clone https://tcanabrava@bitbucket.org/tcanabrava/randrepo.git
Cloning into 'felipao'...
Password: 
error: RPC failed; result=22, HTTP code = 401
fatal: The remote end hung up unexpectedly

そして、私はすでにこの特定のエラーに対するすべてのGoogleの回答を何度も見てきましたが、何も修正できませんでした.

  1. アドレスが正しいと確信しています。ls-remote を使用してブランチが一覧表示されます。
  2. すでに postBuffer = 52428800 を設定しています
  3. プロキシは問題ありません。ls-remote を使用してブランチを一覧表示します
  4. GIT_CURL_VERBOSE=1 で実行すると、残念ながらここに投稿するには長すぎます =(
4

3 に答える 3

1

Git 2.18 (2018 年第 2 四半期) では、Git で使用されるものをより細かく制御できるようになりましcurlた。

Git が反対側からの gzip エンコーディングを受け入れることをアドバタイズするために使用される HTTP クライアント コード。代わりに、cURL ライブラリに最適なものをアドバタイズしてネゴシエートさせてください。

コミット eaf6a1bコミット 1a53e69 (2018 年 5 月 22 日) によるBrandon Williams ( mbrandonw)を参照してください。
( 2018 年 5 月 30 日、コミット 13e8be9Junio C Hamanoによってマージされました)gitster

remote-curl: curl でサポートされているすべてのエンコーディングを受け入れます

curlgzip 応答のみを受け入れるのではなく、curl がサポートするすべてのエンコーディングを受け入れるように構成します。

これにより、" " 機能なしでビルドされた curl のインストールを使用する際の問題が修正されzlibます。aa90b96 (Enable info/refs gzip decompression in HTTP client, 2012-09-19, Git 1.7.12.3) 以降、デコードできないにもかかわらず、「」エンコードを要求することになりますgzip。 さらに悪いことに、そのことを示す明確なエラー メッセージが表示される代わりに、「ダム」http にフォールバックしてしまい、結果が混乱し、デバッグが困難になります。libcurl

curlは、要求されたエンコーディングをサポートしているかどうかを確認するためのチェックを行わないため、代わりに、curl オプションに空の文字列を設定して、curlがCURLOPT_ENCODINGサポートAccept-Encodingするエンコーディングのみを含む " " ヘッダーを送信する必要があることを示します。


GIT_CURL_VERBOSE=1 で実行すると、残念ながらここに投稿するには長すぎます

GIT_CURL_VERBOSEGit 2.28 より前では、 orGIT_TRACE_CURLのためにここに投稿するのは安全ではありません。

Git 2.28 (2020 年第 3 四半期) では、 のサポートGIT_CURL_VERBOSEGIT_TRACE_CURL.

コミット 7167a62コミット 373e9bd (2020 年 5 月 11 日) by Jonathan Tan ( jhowtan)を参照してください。
( 2020 年 6 月 9 日、コミット 0b925a4Junio C Hamanoによってマージされました)gitster

http, imap-send:使用をやめるCURLOPT_VERBOSE

署名者: ジョナサン・タン

が設定されているときはいつでも、 を設定するのではなく、が設定さGIT_CURL_VERBOSEれているかのように動作するように Git に教えます。GIT_TRACE_CURL=1GIT_TRACE_CURL_NO_DATA=1CURLOPT_VERBOSE

これは、機密データが不注意で公開されるのを防ぐためです。

特に、GIT_CURL_VERBOSEは " Authorization" ヘッダーも、 で指定された Cookie も編集しませんGIT_REDACT_COOKIES

GIT_CURL_VERBOSEトレース メカニズムを統一することには、トレース メカニズムの改善がとの両方のユーザーに利益をもたらすという将来の利点もあり、GIT_TRACE_CURL,改善を 2 回実装することを覚えておく必要はありません。


Git 2.28 (2020 年第 3 四半期) でも、トレース出力の機密情報を編集するためのインターフェイスが簡素化されています。

Jonathan Tan ( )によるcommit 827e7d4 (2020 年 6 月 5 日)を参照してください。( 2020 年 6 月 22 日コミット b8a5299Junio C Hamanoによってマージされました)jhowtan
gitster

http: すべての Cookie を編集し、教えるGIT_TRACE_REDACT=0

署名者: ジョナサン・タン

トレース出力 (GIT_TRACE_CURLが true の場合) で、デフォルトですべての HTTP Cookie の値を編集します。
これで、auth ヘッダー ( 74c682d3c6 (" http.c ://github.com/git/git/blob/827e7d4da470e8b9b222b2cf3b4a3b7f8c3c671f/http.c) の実装GIT_TRACE_CURL以降:環境変数を実装"、2016-05-24、Git v2 .10.0-rc0 --バッチ #3にリストされているマージ)) および Cookie 値 (このコミット以降) は、これらのトレースでデフォルトで編集されます。ユーザーは、環境変数を使用してこれらの編集を禁止することもできます。[](httpsGIT_TRACE_CURL

すべての Cookie の値がデフォルトで編集されるようになったためGIT_REDACT_COOKIES(以前はユーザーが編集する個々の Cookie を選択できました)、現在は効果がありません。

于 2018-06-03T23:04:31.727 に答える
0

私も同様の問題を抱えていました。何が役に立ったかわかりませんが、次のようになります。

  1. Curlを7.25にダウングレードしました
  2. .netrcでURL形式を変更しました(http://stackoverflow.com/questions/5796171/git-clone-over-https-401-error-and-not-asking-for-username-or-password/5810821#5810821)
  3. すべてがgit1.7.10の下にあります。1.8.0-1からダウングレードしました(このバージョンでは、WebDavを介したプルとクローンは機能しません。1.7で作成されたリポジトリに関する限り。理由がわかっている場合は、コメントを書き込んでください)。
于 2012-11-02T18:37:40.083 に答える
0

これらは、curl 7.28 バグの正確な症状です。curl 7.28 を使用している場合は、ダウングレードするか、修正が公開されるまで SSH 認証に切り替えてください。

より詳しい情報:

于 2012-10-29T07:45:59.343 に答える