我在Github上有一个私人存储库,用于我正在进行的一个项目。到目前为止,我只在家里的台式机上工作,但我刚刚买了一台笔记本电脑,我正在尝试设置它,以便我可以在任何一台电脑上工作,并进行推/拉更改。
我在我的Github账户上为笔记本电脑添加了一个新的SSH密钥,并且成功地克隆并更改了我设置的公共测试回购。但是,我不能克隆私人回购。为了克隆私有回购,我需要在命令行中做什么特别的事情吗?我是否需要为我的笔记本电脑设置一个新的GitHub帐户,并将自己设置为合作者?
我使用的命令是git clone git://github.com/username/reponame.git
2021年8月13日更新
从这里开始:
2020年7月,我们宣布了要求使用
基于令牌的身份验证(例如,个人访问、OAuth或
GitHub应用程序安装令牌)用于所有经过身份验证的Git操作。
从2021年8月13日开始,我们将不再接受账户密码
在GitHub.com上验证Git操作时。
你今天需要做的事情
For developers, if you are using a password to authenticate Git operations with GitHub.com today, you must begin using a personal access token over HTTPS (recommended) or SSH key by August 13, 2021, to avoid disruption. If you receive a warning that you are using an outdated third-party integration, you should update your client to the latest version.
For integrators, you must authenticate integrations using the web or device authorization flows by August 13, 2021, to avoid disruption. For more information, see Authorizing OAuth Apps and the announcement on the developer blog.
在命令行上使用令牌
1)创建个人访问令牌-遵循此步骤。
2)一旦你有了一个令牌,你可以在通过HTTPS执行Git操作时输入它而不是密码。
例如,在命令行中输入以下内容:
$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token # <----- Bingo!
(*)在这里看到更多。
对我来说,解决方案是:
git clone https://myusername@restoftherepolink.git
在这里,你需要是回购的所有者,但如果你不是,那么它将
git clone https://myusername@github.com/ownersusername/repo_name.git
如果你启用了2FA,那么:
从右上角的个人资料图标进入设置或访问https://github.com/settings/profile
转到底部选项卡或转到https://github.com/settings/tokens
打开最后一个标签这里个人令牌。并生成一个令牌
复制令牌并运行git clone https://myusername@restoftherepolink.git
当提示输入密码时,把标记放在这里。
2023年更好的解决方案
使用个人访问令牌可以工作,但是您可能更喜欢将令牌访问范围缩小到您想要克隆的存储库
Github引入了细粒度的个人访问令牌,它可以做到这一点。
以下是需要遵循的步骤:
在右上角菜单中选择“设置”
在接下来的页面中,从左侧选择“开发人员设置”
然后在下一页的“个人访问令牌”下选择“细粒度令牌”
然后点击“生成新令牌”按钮
在下一页中,您将被要求为您的令牌提供一个名称,您也可以选择Repository访问。如果您只想指定一个存储库,那么请选择“仅选择存储库”,然后从下拉菜单中选择您的存储库
之后,在同一页面中,您需要指定Repository权限。如果你只是想克隆一个私有回购,将“contents”设置为“Access: read-only”
最后点击“生成令牌”按钮
获得令牌后,复制它并运行命令
git clone https://oauth2:<YOUR-TOKEN-HERE>@github.com/<your_user>/<your_repo>.git
就是这样。