Как клонировать GitHub Gist по протоколу SSH?

Github действительно хочет, чтобы мы использовали протокол HTTPS для использования Gists, например, они только перечисляют url HTTPS на странице Gist-например https://gist.github.com/donatello/5834862

можно ли клонировать Gist с помощью протокола SSH?

5 ответов


Да, возможно:

git clone git@github.com:5834862.git

просто замените свой собственный идентификатор Gist, конечно.


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

git@..... является ли протокол ssh

когда вы копируете url-адрес клона для gist, он показывает вам url-адрес клона https

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

изменить https:// to git@ и /****.git to :****.git

в этом случае

git clone git@gist.github.com:5834862.git


выпадающее меню на страницах gist теперь имеет опции Embed/Share / Clone HTTPS / Clone SSH:
gist dropdown
который показывает, что неочевидный трюк опускает имя пользователя:

  • клон HTTPS:
    https://gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git
    Работает для меня с или без .git, и С или без имени пользователя: https://gist.github.com/cben/b6f4a53fac485f75afb9150d03efb2f6 (как обычно на github, канонический URL-адрес просмотра работает и для git)

  • клон SSH:
    git@gist.github.com:b6f4a53fac485f75afb9150d03efb2f6.git
    Он же
    ssh://git@gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git
    Работает для меня с или без .git, но не работает с именем пользователя.


Я включил github 2FA, что делает HTTPS болезненным, поэтому я всегда хочу SSH; следующее ~/.gitconfig делает перевод для всех gists на push:

[url "ssh://git@gist.github.com/"]
    # 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/

и для регулярных (не-gist) РЕПО:

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

если вы хотите, вы можете захватить этой скрипт и поместите его где-нибудь в свой $PATH. Как только это будет сделано, вы можете сделать следующее:

  1. клонировать любой gist из gist.github.com используя HTTPS (или если у вас уже есть клонированная суть, просто перейдите к следующему шагу)
  2. в любом месте дерева каталогов git gist, выполните команду
git-change-url --to-ssh

теперь, при условии, что ваш открытый ключ загружен в вашу учетную запись github (он должен быть указан здесь) вы должны иметь возможность работать с gist через SSH, без необходимости вводить учетные данные GitHub.

гораздо менее подвержены ошибкам, чем редактирование файлов конфигурации git вручную.

Ps: Если вы нашли какие-либо ошибки в скрипте или у вас есть какие-либо дополнения, не стесняйтесь fork :D


изменить https:// to ssh://git@ должен сделать трюк, то есть изменить

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

to

ssh://git@gist.github.com/donatello/5834862

так git clone ssh://git@gist.github.com/... должен клонировать проект (если вы уже добавили SSH-ключ на Github)

по моему личному мнению,официальный документ неясно о SSH.