How to clone a Github Gist via SSH protocol?

GitGithubGist

Git Problem Overview


Github really seems to want us to use the HTTPS protocol to use Gists, for example, they only list the HTTPS url on a Gist page - e.g. https://gist.github.com/donatello/5834862

Is it possible to clone a Gist using SSH protocol?

Git Solutions


Solution 1 - Git

Yes, it is possible:

git clone git@github.com:5834862.git

Just replace with your own Gist ID of course.

Solution 2 - Git

The dropdown on gist pages now has Embed/Share/Clone HTTPS/Clone SSH options (but the SSH option is only shown when you're logged in): gist dropdown
which show the non-obvious trick is omitting the user name:

  • Clone HTTPS:
    https://gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git
    Works for me with or without .git, and with or without the username: https://gist.github.com/cben/b6f4a53fac485f75afb9150d03efb2f6 (as usual on github, the canonical browsing URL works for git too)

  • Clone SSH:
    [email protected]:b6f4a53fac485f75afb9150d03efb2f6.git
    AKA
    ssh://[email protected]/b6f4a53fac485f75afb9150d03efb2f6.git
    Works for me with or without .git, but doesn't work with username.


I enabled github 2FA which makes HTTPS painful so I always want SSH; the following ~/.gitconfig does the translation for all gists on push:

[url "ssh://[email protected]/"]
    # In case I just copy-pasted with username:
    # [only works for my (cben) gists, but those are the ones I can push]
	pushInsteadOf = https://gist.github.com/cben/
    # For gists cloned with official no-username URL:
	pushInsteadOf = https://gist.github.com/

And for regular (non-gist) repos:

[url "ssh://[email protected]/"]
	pushInsteadOf = https://github.com/
[url "ssh://[email protected]/"]
	pushInsteadOf = https://bitbucket.org/
[url "ssh://[email protected]/"]
	pushInsteadOf = https://gitlab.com/

P.S. a handy easy way to debug insteadOf and pushInsteadOf configs is run git remote -v, it shows the effective URLs fetch/push will use.

Solution 3 - Git

https://help.github.com/articles/which-remote-url-should-i-use#ssh-readwrite---gitgithubspanspancom

git@..... is the ssh protocol

when you copy the clone url for a gist it shows you the https clone url

https://gist.github.com/5834862.git

change https:// to git@ and /****.git to :****.git

so in this case

git clone [email protected]:5834862.git

Solution 4 - Git

If you want, you could grab this script and put it somewhere in your $PATH. Once that is done, you can do the following:

  1. Clone any gist from gist.github.com using HTTPS (or if you have an already cloned gist, just proceed to the next step)
  2. Anywhere in the gist's git directory tree, run the command

git-change-url --to-ssh

Now, provided that your public key is uploaded to your github account (it should be listed here) you should be able to work with the gist via SSH, without having to enter your github credentials.

Much less error-prone than editing git config files by hand.

Ps: If you find any bugs in the script, or have any additions to make, feel free to fork :D

Solution 5 - Git

Change https:// to ssh://git@ should do the trick, that is, change

https://gist.github.com/donatello/5834862

to

ssh://[email protected]/donatello/5834862

so git clone ssh://[email protected]/... should clone the project (if you have already added SSH key on Github)

In my personal opinion, the official document is unclear about SSH.

Solution 6 - Git

In order for it to work, one gotta remove the username from the path, leaving only the hash / numbers alone.

Solution 7 - Git

It is possible, Try this:

git clone git@YOURSSHHOST:YOURGISTIDHERE.git

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondonatelloView Question on Stackoverflow
Solution 1 - GitdonatelloView Answer on Stackoverflow
Solution 2 - GitBeni Cherniavsky-PaskinView Answer on Stackoverflow
Solution 3 - GitxeroView Answer on Stackoverflow
Solution 4 - GitSankalpView Answer on Stackoverflow
Solution 5 - GitshintaroidView Answer on Stackoverflow
Solution 6 - GitcnstView Answer on Stackoverflow
Solution 7 - GitOne Mad GeekView Answer on Stackoverflow