1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

git pushで remote: Repository not found.は、VSCode(の組み込みGit)が原因だった

Posted at

事象と解決策

VSCodeのターミナルから git push しようとしました。

$ git push

remote: Repository not found.
fatal: repository 'https://github.com/username/ripository.git/' not found

...???

結論からになりますが、unset GIT_ASKPASS と打ったら解消しました。
こちらのサイトのおかげです。感謝。

本件に取り組んだきっかけ

「突然壊れた」なんて言いたくありませんが、正直その感覚でした。
何なら昨日まではできていたのに…

昨日 git push した時から、今日のこの時までの間に何をしてしまったのか、原因が分からなかったので調べてみようと思いました。

事象の切り分け

まずはログを見てみようと考えました。
VSCodeのターミナルには、OUTPUT というタブがあります。
そこにGitがログを吐いていました。

image.png

git fetch をしようとして Missing or invalid credentials. と出ています。
日本語すら怪しい私は、すぐ翻訳サイトに頼りました。

image.png

そういえば昨日は、ユーザ名やトークンを入れて認証した覚えがありました。
それが今日は求められていないぞ…?
何となくだけど、VSCodeが怪しい気がしてきました。

調査開始

同事象で検索してみると、解決のためのページがいくつかヒットします。

  • リモートリポジトリのURLを HTTPS から SSH に変えれば解決
  • URLを登録する際に、ユーザ名と認証トークンを記載すれば解決

私はいま、httpsで接続しようとしてなぜか認証に失敗しています。

上記の通りに SSH で接続すれば、公開鍵認証方式に切り替わるため、解決しそうです。
また、ユーザ名と認証トークンを予め記載して接続すれば、https でも認証を通過しそうです。

でも、なんだか負けた気がします…
本質は、ユーザ名やトークンを入れて認証を求められないというところにあるのであって、正しい認証情報をそこに入れれば通るはずです。

調査結果

VSCodeはリモートリポジトリへの認証をどのようにして求めているのか について調べたところ、以下を見つけました。

組み込みの Git 拡張機能はGIT_ASKPASS環境変数を挿入して、VS Code が Git リモートへの認証を処理できるようにします。

GIT_ASKPASS ってなんだ??

GIT_ASKPASS は設定ファイルの core.askpass の値をオーバーライドします。 これはユーザによる認証情報の入力が必要なときに呼び出されるプログラムで、コマンドライン引数としてプロンプトのテキストを受け取り、応答を標準出力へ返すようになっている必要があります。

まさに、認証情報を求め、受け取り、結果を返すという流れを担っているようです。

つまりそれが表示されなかったということは、GIT_ASKPASS 自体か、呼び出されるはずのプログラムに何らかの不具合が生じ、認証情報の入力を促すことができなかった、
結果、認証情報が未入力のまま git push しようとしたため怒られた。ということなのではないでしょうか。

あらためて、対応

正直、ログからは何が原因で認証を求めなかったのか、掴むことはできませんでした。

ただ、GIT_ASKPASScore.askpass をオーバーライドしているとのことなので、GIT_ASKPASS を初期化すれば core.askpass が使われそうです。

そして、自分は core.askpass という設定をしていません。
となると、恐らくターミナルからの標準入力を使いそうです。

と、いうことで最終的に unset GIT_ASKPASS として、環境変数を初期化することで、git push できるようになりました。

気がかり

今後、GIT_ASKPASS に依存している何らかの環境を使用してリモートリポジトリへ接続する場合、認証エラーになりそうだなと思います。
まぁ、その時はSSHを使えば良いかと考えています。

ただ、それを考えると最初から SSH に切り替えてしまうという対策が一番良かったのかもしれません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?