克隆私有仓库(Github)

445

我在Github上有一个私有仓库,用于我正在开发的项目。目前为止,我只在家里的台式电脑上工作,但我刚刚买了一台笔记本电脑,并尝试设置它,以便我可以从任何一台计算机上工作,并推送/拉取更改。

我在Github帐户中添加了新的SSH密钥,成功地克隆并对我设置的公共测试repo进行更改。但是,我无法克隆私有repo。我需要在命令行中做些特殊设置才能克隆私有repo吗?我需要为我的笔记本电脑设置一个新的GitHub帐户并将自己设置为合作者吗?

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


由于某些原因,2022年4月的更新答案对我不起作用。这里提供的答案(https://dev59.com/X8Lra4cB1Zd3GeqPBRJl)对我有用 - git clone https://username:token@github.com/user/repo - desert_ranger
32个回答

11

2021年8月13日更新

来自这里

在2020年7月,我们宣布了要求使用基于令牌的身份验证(例如个人访问令牌、OAuth或GitHub应用程序安装令牌)进行所有经过身份验证的Git操作的意图。从2021年8月13日起,在GitHub.com上进行Git操作时,我们将不再接受帐户密码的身份验证。

你需要今天做的事情

  • 对于开发者而言,如果您今天在使用密码对GitHub.com进行Git操作的身份验证,您必须在2021年8月13日之前开始使用个人访问令牌(建议使用HTTPS)或SSH密钥,以避免中断。如果您收到警告,表示您正在使用过时的第三方集成,您应该将客户端更新到最新版本。

  • 对于集成商,您必须在2021年8月13日之前使用Web或设备授权流进行集成身份验证,以避免中断。有关更多信息,请参阅授权OAuth应用程序开发者博客上的公告


在命令行上使用令牌

1) 创建个人访问令牌-请按照此说明

2) 一旦您拥有令牌,您可以在通过HTTPS执行Git操作时输入它,而不是输入密码。

例如,在命令行上,您将输入以下内容:

$ git clone https://github.com/username/repo.git
Username: your_username
Password: your_token # <----- Bingo!

(*) 更多内容请参见此处


2
git clone https://[USER]:[TOKEN]@github.com/username/repo.git 也可以工作! - teoman

11

10

我有一家(私人)公司账户,并启用了双重身份验证,所以我不得不合并一些帖子才能使其正常工作,如下所示。(记录下来可能对具有相同情况的人有用)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

按照这里提供的方法安装了凭据管理器并更新了GIT:https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

但是当我尝试使用克隆命令时,问题并没有解决,反而变成了下面这个:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

我的密码中有$符号,但GIT命令行/GIT Bash不喜欢它。我在返回的错误文本中没有看到$符号。

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

我必须引用这个网站:https://git-scm.com/book/zh/v2/Git-Tools-Credential-Storage

请注意:如果您的帐户在Windows凭据管理器中存储了错误的密码,那么这也会加重问题。在进行下面的步骤之前,我删除了以这种方式存储的GitHub凭据。

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

现在 Windows 凭据管理器弹出。我在文本框中输入了我的用户名和密码(这接受了我的带有 $ 符号的密码),并提示我输入2因素认证代码。我输入了 Google Authenticator 的认证代码,克隆进程成功启动。


美元符号 $ 是 Unix 中的保留字符。它标记着检索与跟随 $ 符号的字符串相等的变量值的开头。 - Let Me Tink About It
对我来说,删除Windows凭据解决了这个问题。 - Michael Larionov

9

当从启用了2FA的私有仓库克隆时,您需要遵循简单的步骤:

  1. 进入您的Git账户
  2. 进入 设置->开发者设置->个人访问令牌
  3. 点击 生成新token
  4. 创建一个具有所需功能和您想要的标题的token
  5. 当您使用git clone repoName克隆私有repo时,在输入用户名后,将个人访问令牌作为密码输入。

当您在私有repo上获得 Authentication failed 错误消息时,请遵循相同的步骤


6

回答mac的问题,你可以在github仓库页面上点击SSH,复制URL来获取你的SSH克隆URL。在You can clone with HTTPS, SSH, or Subversion.下面可以看到。


5

在我的Mac电脑上,以下命令可行:

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

4
git clone https://{personal access token}@github.com/Shuai1996/Root.git

3

3
除了MK Yung的回答之外:请确保将公钥添加到您要部署到的存储库的部署密钥中,以避免收到403 Forbidden响应。

3

如果您确定您没有启用两步验证,有权限访问仓库,并且仓库存在,则可能是您的git@github.com登录了另一个帐户。

要检查这一点,请执行以下操作:

ssh -T git@github.com

如果显示其他账户,解决方法如下:
 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T git@github.com
 git clone git@github.com:<owner_name>/<repo_name>.git

它显示:未知选项-T。我的git版本是2.7.4 - bvdb
@bvdb 我很抱歉,应该是ssh -T git@github.com - Kexin Lu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接