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

如何通过SSH协议克隆Github Gist?,git,github,gist,Git,Github,Gist,Github似乎真的希望我们使用HTTPS协议来使用Gist,例如,他们只在摘要页面上列出HTTPS url-例如 是否可以使用SSH协议克隆Gist?是的,可以: git clone git@github.com:5834862.git 当然,只需替换为您自己的Gist ID。 git@..... 是ssh协议吗 复制gist的克隆url时,它会显示https克隆url https://gist.github.com/5834862.git 将https://更改为git@并将/**.git

Github似乎真的希望我们使用HTTPS协议来使用Gist,例如,他们只在摘要页面上列出HTTPS url-例如

是否可以使用SSH协议克隆Gist?

是的,可以:

git clone git@github.com:5834862.git
当然,只需替换为您自己的Gist ID。

git@..... 是ssh协议吗

复制gist的克隆url时,它会显示https克隆url

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

https://
更改为
git@
并将
/**.git
更改为
:**.git

所以在这种情况下


git克隆git@gist.github.com:5834862.git

如果需要,可以抓取脚本并将其放在
$PATH
中的某个位置。完成后,您可以执行以下操作:

  • 使用
    HTTPS
    gist.github.com
    克隆任何gist(或者如果您已经克隆了gist,只需继续下一步)
  • 在gist的git目录树中的任意位置,运行命令
  • git将url更改为ssh
    
    现在,如果您的公钥上传到您的github帐户(应该列出),您应该能够通过
    SSH
    使用gist,而无需输入github凭据

    与手动编辑git配置文件相比,更不容易出错


    Ps:如果您在脚本中发现任何错误,或者需要添加任何内容,请随意fork:D

    https://
    更改为
    ssh://git@
    应该做到这一点,即改变

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

    所以
    git克隆ssh://git@gist.github.com/…
    应该克隆项目(如果您已经在github上添加了SSH密钥)


    在我个人看来,SSH还不清楚。

    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

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

      我可以使用或不使用
      .git
      ,但不能使用用户名


    我启用了github2fa,这让HTTPS很痛苦,所以我总是想要SSH; 以下
    ~/.gitconfig
    对推送时的所有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/
    
    对于定期(非gist)回购:


    另外,一种简便的调试
    代替
    推送代替
    配置的方法是运行
    git remote-v
    ,它显示了获取/推送将使用的有效URL。

    为了使其工作,必须从路径中删除用户名,只留下散列/数字。

    如果可能,请尝试以下方法:

    git clone git@YOURSSHHOST:YOURGISTIDHERE.git
    

    那是宋承宪,不是git://You 您很可能还希望在命令行上传递gist名称:git clonegit@github.com:5834862.git gist\u name您编辑了问题以适合您的答案吗?:D经典!现在,答案的问题是什么(42?;)我在一个防火墙后面,通过端口443(SSL)谈论SSH的技巧在gist.github.com上似乎不像在SSH.github.com上那样有效。https有什么问题吗?;)似乎每次使用协议时都需要在命令行上指定用户名和密码。对我来说,它可以与SSH配合使用(无需每次都指定用户名/密码)。此外,如果启用2-factor auth,HTTPS auth会变得更复杂。这与op要求的不完全一样,但仍然很有用!我不想克隆我现有的存储库,所以这个解决方案适合我。我将添加
    nano$(git rev parse--git dir)/config
    ,作为直接手动修改条目的替代方法。因此答案将更加独立;)。否则,您首先必须下载一个脚本,并检查它是否会对您的系统和s.o.造成危害。目前,https可以使用用户名也可以不使用用户名,但SSH只能使用用户名,例如
    ssh://git@gist.github.com/5834862
    。我发现我必须从SSH URI中删除
    gist.
    ,才能成功实现
    git克隆。如果我离开gisthub.com而不是使用github.com
    ,命令就会挂起。从2020年9月起,“嵌入/共享/克隆…”菜单不见了。奇怪的是,我仍然可以看到它,无论是登录的还是未登录的。菜单是可见的,但除非您登录,否则不会显示SSH的选项/URL。仅向匿名用户显示这些选项/选项卡:HTTPS、GitHub CLI、使用GH桌面打开、下载zip。显然已删除。菜单没有给我显示
    [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/
    
    git clone git@YOURSSHHOST:YOURGISTIDHERE.git