我在Github上有一个私人存储库,用于我正在进行的一个项目。到目前为止,我只在家里的台式机上工作,但我刚刚买了一台笔记本电脑,我正在尝试设置它,以便我可以在任何一台电脑上工作,并进行推/拉更改。

我在我的Github账户上为笔记本电脑添加了一个新的SSH密钥,并且成功地克隆并更改了我设置的公共测试回购。但是,我不能克隆私人回购。为了克隆私有回购,我需要在命令行中做什么特别的事情吗?我是否需要为我的笔记本电脑设置一个新的GitHub帐户,并将自己设置为合作者?

我使用的命令是git clone git://github.com/username/reponame.git


当前回答

如果你想在Dockerfile中实现它,下面几行可以帮助你。

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

然后我们可以使用下面的参数进行构建。

docker build --build-arg git_personal_token={your_token} .

其他回答

如果新使用的计算机有不同的凭据,则运行此命令

git 克隆 https://github.com/username/reponame.git

直接不行。Git将尝试使用存储的凭据,而不会提示您输入用户名和密码。由于凭证不匹配,git将输出未找到Repository,克隆操作失败。我解决这个问题的方法是删除旧的凭据,因为我不再使用它们了,然后再次运行上面提到的命令,输入所需的用户名和密码并克隆私有回购。

2023年更好的解决方案

使用个人访问令牌可以工作,但是您可能更喜欢将令牌访问范围缩小到您想要克隆的存储库

Github引入了细粒度的个人访问令牌,它可以做到这一点。

以下是需要遵循的步骤:

在右上角菜单中选择“设置”

在接下来的页面中,从左侧选择“开发人员设置”

然后在下一页的“个人访问令牌”下选择“细粒度令牌”

然后点击“生成新令牌”按钮

在下一页中,您将被要求为您的令牌提供一个名称,您也可以选择Repository访问。如果您只想指定一个存储库,那么请选择“仅选择存储库”,然后从下拉菜单中选择您的存储库

之后,在同一页面中,您需要指定Repository权限。如果你只是想克隆一个私有回购,将“contents”设置为“Access: read-only”

最后点击“生成令牌”按钮

获得令牌后,复制它并运行命令

git clone https://oauth2:<YOUR-TOKEN-HERE>@github.com/<your_user>/<your_repo>.git

就是这样。

这招对我很管用:

git clone https://username:password@github.com/username/repo_name.git

我认为值得一提的是,如果由于某些原因不能使用SSH协议,并且修改私有存储库http(s) URL以提供基本的身份验证凭据也不是一个选项,那么还有一个替代方案。

基本身份验证头可以使用http配置。extraHeader git-config选项:

git config --global --unset-all "http.https://github.com/.extraheader"
git config --global --add "http.https://github.com/.extraheader" \
          "AUTHORIZATION: Basic $(base64 <<< [access-token-string]:x-oauth-basic)"

其中[access-token-string]占位符应该被替换(包括方括号)为生成的真实令牌值。您可以在这里和这里阅读更多关于访问令牌的信息。

如果配置已正确应用,则配置的AUTHORIZATION头将包含在git命令访问的github.com IP地址的每个HTTPS请求中。

正如每个人都知道克隆的过程,我想在这里补充一些东西。 不要担心特殊字符或将“@”写成“%40”,参见字符编码

$ git clone https://username:password@github.com/user/repo   

这条线就可以了

假设我有一个包含特殊字符的密码(我不知道在我的密码中替换什么'@') 如果我想使用我原来的密码以外的其他临时密码怎么办

为了解决这个问题,我鼓励使用GitHub开发者选项来生成访问令牌。 我相信访问令牌是安全的,你不会发现任何特殊字符。

creating-a-personal-access-token

现在我将编写下面的代码来访问我的存储库。

$ git clone https://username:token@github.com/user/repo

我只是用Access-token替换了我原来的密码, 现在我不担心有人看到我的访问凭证,我可以在任何时候重新生成令牌。

确保您已勾选“私有存储库的完全控制”