克隆私人Github存储库


226

我在Github上有一个我正在从事的项目的私有存储库。到现在为止,我只在家用台式机上工作,但我只是买了一台笔记本电脑,并试图对其进行设置,以便可以从两台计算机上进行项目工作,并进行推/拉更改。

我在笔记本电脑的Github帐户中添加了新的SSH密钥,并成功克隆并更改了我设置的公共测试存储库。但是,我无法克隆私人仓库。为了克隆私有存储库,我需要在命令行中执行任何特殊操作吗?我需要为我的笔记本电脑设置一个新的GitHub帐户并将自己设置为协作者吗?

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


3
您使用什么命令尝试在本地克隆私有存储库?您遇到什么错误?
罗恩·德维拉

Answers:


171

专用克隆URL采用以下形式git@github.com:username/repo.git-也许您需要使用git@而不是git://

git:// URL是只读的,看起来私有存储库不允许这种形式的访问。


是的-使用“ git@github.com:”而不是“ https://”解决了我的问题!实际上,我同时启用了2FA,但这与它无关。
狮子座

148

这为我工作:

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

当然,这是在将我的SSH密钥添加到Github之后。如有必要,我在CentOs服务器上使用了它。


4
谢谢你 但是我不知道为什么这行得通。从未提示输入密码。git是否应该以任何方式通过https克隆我的ssh键?我以为不是。
reinhardt's

1
不错,它使我能够在Ubuntu上下载私人仓库。
尼诺·斯科帕克(NinoŠkopac),2016年

为什么这样做有效,但git@github.com:username / repo.git不起作用?
diimdeep

@diimdeep Git和其他工具经常使用git:协议来访问远程存储库中的文件。某些防火墙配置阻止git:// URL,这会在尝试克隆存储库或下载依赖项时导致错误。(例如,公司防火墙阻止git:是“臭名昭著”的。)如果遇到此问题,则可以通过运行以下命令来强制使用https::git config --global url。” https:// “ .insteadOf git://
charlchad

1
在某些情况下,如果系统提示您输入密码,然后拒绝访问,则可能是因为您需要提供“个人访问令牌”而不是GitHub登录密码。[1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/...
大卫Winiecki

71

这为我工作:

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

5
这对于特殊字符密码是有问题的,将您的密码留在日志中并且似乎不再起作用
pcnate

5
尝试此操作-系统将提示您输入您的帐户密码。不用担心密码泄漏到历史记录或日志中。git clone https://username@github.com/username/repo_name.git
Vinay

64

我已经遇到过几次这个问题,每次我登陆此页面,尝试每件事都失败了!

这是因为我启用了2FA!

根据https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

如果启用  了双重身份验证,或者要访问使用SAML单点登录的组织,则  必须  提供个人访问令牌,  而不是输入HTTPS Git的密码。

  1. 点击此链接并创建访问令牌
  2. git clone https://github.com/username/repo_name.git (默认的git repo链接就足够了!)
  3. 输入您的用户名并使用访问令牌作为密码!!

更新:

  • 如果您不介意在命令行中公开访问令牌,则还可以将访问令牌粘贴为用户名,然后按Enter键(无需密码)。
  • 讨厌一遍又一遍地复制并粘贴访问令牌?
    使用git config credential.helper store(不要在您不信任的计算机上执行此操作)

如果您使用的是Windows,则可以安装github.com/microsoft/Git-Credential-Manager-for-Windows。然后,在克隆私有存储库时,将显示具有Github登录名的UI窗口。它还将使您填写2FA代码。您的Github凭据将被安全地存储。
吉里克

18

使用Windows版Git可以更轻松地使用HTTPS网址。

然后打开一个git shell git clone https://github.com/user/repo。出现提示时输入用户名和密码。无需设置SSH密钥。


1
我同意不必安装SSH的简单
费利克斯·加侬-格尼尔

同意其他意见,仅使用HTTPS URL即可在Windows或Ubuntu上完美运行(尝试于116.04)
greg_data

18

对我来说,解决方案是:

git clone https://myusername@restoftherepolink.git

在这里,您需要成为存储库的所有者,但如果不是,则它将作为

git clone https://myusername@github.com/ownersusername/repo_name.git

如果有的2FA enabled话:

  1. 从右上角的配置文件图标转到设置,或访问https://github.com/settings/profile
  2. 转到底部标签或转到https://github.com/settings/tokens
  3. 在此处打开最后一个标签。并生成令牌
  4. 复制令牌并运行 git clone https://myusername@restoftherepolink.git

当提示您输入密码时,将令牌放在此处。 令牌生成图像在这里


1
如果没有使用该URI的公共存储库,则git会提示输入用户名/密码,因此第一个命令是正确的
pcnate

8

我有一个公司(私人)帐户并启用了2-Factor-Authentication,所以我不得不合并一些帖子才能使其正常工作,如下所示。(记下来,这样对情况相同的人可能有用)

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/

当我尝试按如下所示使用clone命令时,问题无法解决,因此无法解决问题:

$ 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/en/v2/Git-Tools-Credential-Storage

请注意:如果在Windows Credential Manager中为您的帐户存储了错误的密码, 这也会加剧问题。在移至以下步骤之前,我删除了以这种方式存储的github凭证。

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

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


$在Unix中,美元符号是保留字符。它标志着名称与该$符号后的字符串相等的变量值的检索开始。
让我思考一下

对我来说,删除Windows凭据可以解决此问题。
Michael Larionov

6

使用2FA enable从私有存储库克隆时,您需要执行一些简单的步骤

  1. 转到您的Git帐户
  2. 转到设置->开发人员设置->个人访问令牌
  3. 点击生成新令牌
  4. 创建具有所需标题和功能的令牌
  5. 克隆专用存储库时,在输入用户名后,使用git clone repoName,输入个人访问令牌作为密码。

当您收到专用存储库的身份验证失败错误消息时,请遵循相同的步骤


5

为了响应Mac的答案,你可以得到你的SSH克隆网址,您的GitHub库页面,通过点击SSHYou can clone with HTTPS, SSH, or Subversion.再复制网址。



3

除了MK Yung的答案:如果您不想收到403 Forbidden响应,请确保将要部署到任何地方的公钥添加到仓库的部署密钥中。




1

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

git clone https://github.com/username/reponame.git

直接将不起作用。Git将尝试使用存储的凭据,并且不会提示您输入用户名和密码。由于凭据不匹配,因此将输出git Repository not found,并且克隆操作失败。我解决该问题的方法是删除旧的凭据,因为我不再使用它们,然后再次运行上述命令,输入所需的用户名和密码,并克隆了专用存储库。


1

1)尝试使用以下格式的用户名和密码运行命令

git clone https://your_username:your_password@github.com/username/reponame.git

现在其他人提到的问题是,我们的密码中有特殊字符。在Javascript中,使用以下代码将带有特殊字符的密码转换为UTF-8编码。

console.log(encodeURIComponent('password@$123'));

现在使用此生成的密码,而不是带有特殊字符和运行命令的密码。

希望这个解决问题。



0

如果您确定未启用2FA,并且您有权访问该存储库,并且该存储库存在,则您的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

它显示:unknown option -T。我的git版本是2.7.4
bvdb

@bvdb,我很抱歉,应该是ssh -T git@github.com
Lu,

0

如果您想在中实现此目标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} .

0
git clone https://myusername:mygithubpassword@github.com/myusername/project.git

当您尝试从存储库中使用私有存储库时,您需要为此传递用户名和密码。


这不安全。克隆的存储库将提供的http链接存储在.git / config文件中。无需用户名和密码即可将对本地存储库的所有提交都推送到远程。如果您不是唯一的用户,那真的很危险!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.