Go言語で以下のような操作を行うとエラーとなり、正常に取得できないことがあります。
- GitHubのプライベートリポジトリをimportする
- go getあるいはgo mod tidy等のコマンドでGitHubのプライベートリポジトリから取得しようとする
パブリックリポジトリにすれば解決しますが、どうしても公開したくないこともあるかと思います。
その場合でも設定を変更することで問題なく取得できるようになります。
この記事ではその方法について解説します。
目次
前提条件
- GitHubにSSH鍵が登録されていてSSH接続できる状態であること
- Linux環境であること
どういったエラーが出るのか
プライベートリポジトリをgo getしようとしたとき、以下のようなエラーが出ます。
>go get github.com/hogehoge/hugahuga
go: module github.com/hogehoge/hugahuga: git ls-remote -q origin in /go/pkg/mod/cache/vcs/xxxxxxxxxxxxxxxxxxxxxxxx: exit status 128:
fatal: could not read Username for 'https://github.com': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.
一部、伏せ字もしくは適当な文字列に変更してあります。
エラーメッセージを見ると、GitHubに対してhttpsで接続しようとしたがユーザー名が分からないためエラーになっているようです。
回避方法
コマンドを実行するユーザーのホームディレクトリに「.gitconfig」ファイルを作り、その中に以下の内容を追記します。
[url "ssh://git@github.com/"]
insteadOf = https://github.com/
https接続の代わりにSSH接続を使うようにすることでプライベートリポジトリからでも取得できるようになります。
アクセストークンを使う方法でもエラーを回避できるらしい
ネットで調べるとパーソナルアクセストークンを作ってそれを.gitconfigに設定することでプライベートリポジトリから取得できるようにする方法もあるみたいです。
(パーソナルアクセストークンの他に環境変数の設定も必要っぽい)
まとめ
上記の方法でGitHubのプライベートリポジトリからでも取得できるようになります。
この記事がプライベートリポジトリから取得できなくて悩んでいる方の参考になれば幸いです。
コメント