Go言語でGitHubのプライベートリポジトリからimportする方法

Go言語で以下のような操作を行うとエラーとなり、正常に取得できないことがあります。

  • GitHubのプライベートリポジトリをimportする
  • go getあるいはgo mod tidy等のコマンドでGitHubのプライベートリポジトリから取得しようとする

パブリックリポジトリにすれば解決しますが、どうしても公開したくないこともあるかと思います。
その場合でも設定を変更することで問題なく取得できるようになります。

この記事ではその方法について解説します。

目次

前提条件

  • GitHubにSSH鍵が登録されていてSSH接続できる状態であること
  • Linux環境であること

Linux環境である理由ですが、私がそれ以外の環境に詳しくないというだけの話です。💦
.gitconfigの場所がきちんと特定できるのであれば他の環境でも問題ないと思います。

どういったエラーが出るのか

プライベートリポジトリを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に設定することでプライベートリポジトリから取得できるようにする方法もあるみたいです。
(パーソナルアクセストークンの他に環境変数の設定も必要っぽい)

私は前述の通りSSH接続できるようにしているのでこの方法は試しておらず、真偽のほどは定かではありません。
予めご了承ください。


まとめ

上記の方法でGitHubのプライベートリポジトリからでも取得できるようになります。

この記事がプライベートリポジトリから取得できなくて悩んでいる方の参考になれば幸いです。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次