はじめに
初めまして!
プログラミングスクールRUNTEQ受講生のNamiと申します。
こちらの記事がQiita初投稿になります!
先日git cloneができないという本格的なエラーを初めて経験し、解決に至るまでに様々なことを知ることができたので、情報を整理しつつまとめていけたらと思い記事を書いてみました。
プログラミング学習を始めて2ヶ月弱の初心者がgit clone できない問題に遭遇してから解決できるまでをまとめた備忘録となります。
よろしくお願いします。
問題
カリキュラムの環境構築の際、git cloneがうまくできず以下のエラーがでました。
fatal: repository 'https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/xxx/' not found
not found?他のカリキュラムはgit cloneできるのになぜだろう。
AIに聞いてみると、権限がうんたら...謎すぎる。
自力での解決は困難と判断し講師の方に初めて質問してみました。
原因
MacOSのKeychainやGitのcredential helperに古いもしくは間違った認証情報が紐づいていることでした。
その情報を使ってcloneしようとしていたので、エラーになりcloneできなかったようです。
Keychain...?credential helper...?初めて聞く単語がズラリと出てきたので調べてみると以下の内容でした。
| 用語 | 説明 |
|---|---|
| Keychain | MacOSに標準で搭載されているパスワード管理機能 |
| credential helper | Gitにユーザー名やパスワードなどの管理方法を指示する設定 |
設定と確認事項
MacOSのKeychainの情報を確認する
MacOSのKeychainを確認し、認証情報に誤った情報があれば削除します。
credential helperの設定を確認する
以下のコマンドで、Gitの credential helperの設定を確認できます。
git config --get credential.helper
実行すると、MacのKeychainのosxkeychainが使われているか、AWS CodeCommit専用の認証方法の!aws codecommit credential-helper $@ が使われているか確認することができます。
credential helperを用途別に設定
公式ではGitHubは osxkeychain 、AWS CodeCommitは !aws codecommit credential-helper $@ のように用途別で分けて管理することが推奨されています。
個人的に試したこと
GIT_CURL_VERBOSE=1 で通信ログを確認
解決方法を調べていると、git cloneできない理由を可視化できるGIT_CURL_VERBOSE=1 の存在を知りました。
実行するとGitの通信の詳細や認証情報が正しく送られているかなどを全て確認することができます。
※ログが長いので注意です!
GIT_CURL_VERBOSE=1 git clone <リポジトリURL>
よくあるエラーと原因は以下になります。
| 表示されるステータス | 考えられる原因 |
|---|---|
403 Forbidden |
認証情報が正しくない、権限不足 |
404 Not Found |
リポジトリが存在しない、URLが間違っている |
| SSL/TLS 関連エラー | 証明書や接続設定に問題あり |
解決方法
自分なりに色々調べたり、講師の方からの助言をお聞きした後、最終的に以下のユーザー名・パスワード付きURLを使い、cloneすることができました!
パスワードが入っているのでセキュリティ面には注意が必要です。
※学習時の使用推奨
git clone https://ユーザー名:パスワード@<リポジトリURL>
そしてパスワードに + や / などの特殊文字が入っていると、URLとして正しく解釈されずエラーになってしまうため、エンコード(URLで使えない文字を安全な文字列に変換) が必要です。
エンコード例
| 特殊文字 | 変換後 |
|---|---|
/ |
%2F |
+ |
%2B |
@ |
%40 |
: |
%3A |
まとめ
- git cloneができない理由は、古いもしくは間違った認証情報が紐づいておりその情報を使ってcloneしようとしていたから
- git cloneができない場合は、MacOSのKeychainやcredential helperの設定を確認してみる
感想
無事に問題が解決した後に自分の行動を振り返ってみると、AIに頼りすぎて本来は必要のない設定をしていたり、解決の遠回りをしていたことに気づき反省![]()
今回の経験を通じて、解決方法を調べる際は 公式ドキュメントや信頼できる技術記事を活用する重要性を実感しました。
本格的なエラーが出たのが初めてで、知らない単語や概念が次々に出てきて戸惑うこともありましたが、このエラーを通じて新たな知識や解決方法など多くの学びを得られ、自分にとって非常に有意義な経験になったと感じています。
これからも学習を継続し、着実にスキルを積み重ねていけたらと思います!
ここまで読んでいただき、ありがとうございました![]()