如何通过SSH协议克隆Github Gist?

j7dteeu8  于 2023-06-28  发布在  Git
关注(0)|答案(8)|浏览(144)

Github似乎真的希望我们使用HTTPS协议来使用Gist,例如,他们只在Gist页面上列出HTTPS URL-例如。https://gist.github.com/donatello/5834862
是否可以使用SSH协议克隆Gist?

mf98qq94

mf98qq941#

是的,有可能:

git clone git@github.com:5834862.git

当然,只要用自己的Gist ID替换即可。

prdp8dxp

prdp8dxp2#

gist页面的下拉列表现在有嵌入/共享/克隆HTTPS/克隆SSH选项(但SSH选项只有在您登录时才会显示):

其中显示了一个不明显的技巧,即省略用户名

  • 克隆HTTPS:

https://gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git
无论是否使用.git,无论是否使用用户名,都对我有效:https://gist.github.com/cben/b6f4a53fac485f75afb9150d03efb2f6(和github上一样,git也可以使用规范浏览URL)

  • 克隆SSH:

git@gist.github.com:b6f4a53fac485f75afb9150d03efb2f6.git
又名

ssh://git@gist.github.com/b6f4a53fac485f75afb9150d03efb2f6.git

无论有没有.git,它都能为我工作,但不能与用户名一起工作。
我启用了github 2FA,这让HTTPS很痛苦,所以我总是想要SSH;下面的~/.gitconfig在push上对所有gist进行翻译:

[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/

对于常规(非要点)存储库:

[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/

P.S.调试insteadOfpushInsteadOf配置的一个方便简单的方法是运行git remote -v,它显示了有效的URL获取/推送将使用。

zy1mlcev

zy1mlcev3#

https://help.github.com/articles/which-remote-url-should-i-use#ssh-readwrite---gitgithubspanspancom
git@.....是ssh协议
当你复制这克隆网址为一个要点它显示你的https克隆网址
https://gist.github.com/5834862.git
https://更改为git@,将/****.git更改为:****.git
所以在这种情况下
git clone git@gist.github.com:5834862.git

rt4zxlrg

rt4zxlrg4#

如果需要,可以获取this脚本并将其放在$PATH中的某个位置。完成后,您可以执行以下操作:
1.使用HTTPSgist.github.com克隆任何gist(或者如果您已经克隆了gist,则继续下一步)
1.在gist的git目录树中的任何位置,运行命令

git-change-url --to-ssh

现在,只要你的公钥上传到你的github账户(应该是here),你就可以通过SSH使用gist,而不必输入你的github凭证。
比手工编辑git配置文件更不容易出错。
Ps:如果你在脚本中发现任何bug,或者有任何补充,请随时fork:D

nhaq1z21

nhaq1z215#

https://更改为ssh://git@应该可以达到目的,即更改

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

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

所以git clone ssh://git@gist.github.com/...应该克隆项目(如果你已经在Github上添加了SSH密钥)
我个人认为,官方文件对宋承宪的描述并不清楚。

xlpyo6sf

xlpyo6sf6#

为了让它工作,必须从路径中删除用户名,只留下哈希/数字。

osh3o9ms

osh3o9ms7#

克隆gist的SSH和HTTPS链接可以直接通过GitHub的界面复制,如贝尼Cherniavsky-Paskinanswer所示
然而,要点将被放在一个git目录中,以那个丑陋的哈希作为名称。
通过在克隆时指定目录名,可以避免这种情况:

git clone git@gist.github.com:9e7f15ae79acd6b60519ef094f669b26.git speedtest-loop
nhaq1z21

nhaq1z218#

这是可能的,试试这个:

git clone git@YOURSSHHOST:YOURGISTIDHERE.git

相关问题