golang: How to go get private repos

15 Sep 2014 in TIL

Recently, I've been working on some golang projects at DataSift that depend on some private modules. This means that when I run go get to fetch the module, GitHub asks me for my username and password. Unfortunately, as I use 2FA I need to generate a new, temporary password for applications that want my password. As go get doesn't cache credentials, I'd have to do this every time I needed a private repo. Instead, I wanted to force go get to use my SSH key.

Fortunately, as go get uses git, you can change your .gitconfig to force it to use SSH.

$ git config --global url."[email protected]:".insteadOf "https://github.com/"
$ cat ~/.gitconfig
[url "[email protected]:"]
insteadOf = https://github.com/

Here, we say use [email protected] any time you'd use https://github.com. This works for everything, not just go get. It just has the nice side effect of using your SSH key any time you run go get too.