問題
作業リポジトリで依存パッケージを全部アップデートしようと以下のコマンドを実行したところ
$ go get -u ./...
以下のようなエラーが出ました。
package github.com/hoge/fuga/package: /home/vagrant/go/src/github.com/hoge/fuga is from git@github.com:hoge/fuga.git, should be from https://github.com/hoge/fuga
怒られたのは依存パッケージでなく、開発中の作業リポジトリでした。
こちらは自分のプライベートリポジトリで、開発自体は
$ git clone git@github.com:hoge/fuga.git
で登録したのでSSH
で問題なく使えたのですが、go get
はHTTPS
で登録する必要があるみたいです。
解決法
プライベートリポジトリをHTTPSで登録すると、ID&PWを訊かれるようになります。
毎回ID&PWを入力するのは手間なので、以下のように対応します。
アクセストークンの取得
以下のサイトを参考にアクセストークンを発行します。
Creating an access token for command-line use
- 右上の歯車マークをクリックして設定を開く
- 左メニューの
Personal access tokens
を開く Generate new token
をクリック必要そうなscopeにチェックを入れて
Generate token
表示されるaccess tokenをコピー。1回きりしか表示されないので注意です。
自動ログイン設定
先ほど取得したアクセストークンを~/.netrc
に登録します。
$ vim ~/.netrc
machine github.com login <token>
gitのremote urlを変更
現状のリポジトリの状態を確認します。
$ git remote -v origin git@github.com:hoge/fuga.git (fetch) origin git@github.com:hoge/fuga.git (push)
以下を実行して修正します。
$ git remote set-url origin https://github.com/hoge/fuga.git $ git remote set-url --push origin https://github.com/hoge/fuga.git
またgo get
するときは現在のローカルブランチをmaster
にしておいてください。
これでgo get
しても怒られなくなりました。
その他注意
ID&PWをnetrcに登録してもできるのですが、二段階認証を設定していると必ずコケます。
どうやらgo get
は二段階認証に対応してないみたいです。