克隆一个私有存储库(Github)

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

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

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

521352 次浏览

私有克隆url采用git@github.com:username/repo.git的形式——也许你需要使用git@而不是git://?

git:// url是只读的,看起来私有回购不允许这种形式的访问。

在回应mac的答案,你可以得到你的SSH克隆URL在你的github回购页面,通过点击SSHYou can clone with HTTPS, SSH, or Subversion.和复制URL。

使用Git for Windows更容易使用HTTPS url。

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

除了MK Yung的回答之外:如果您不想收到403 Forbidden响应,请确保将部署到回购的部署键中的任何地方的公钥添加到部署键中。

这招对我很管用:

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

首先确保您有SSH密钥或在以下位置生成一个: https://help.github.com/articles/generating-ssh-keys/ < / p > 一旦你有了你的密钥,你必须将它添加到你的github帐户: https://github.com/settings/ssh < / p >

对于Windows用户,作为管理员运行git bash非常有用。

现在,克隆应该适用于私有存储库(repo),而无需输入用户名和密码。

这对我很有用:

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

在github中添加桌面ssh公钥。

https://github.com/settings/keys

您可以克隆的回购没有任何密码。

对我来说,解决方案是:

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
当提示输入密码时,将令牌放在这里。 令牌生成图像这里 < / p >
这在我的mac上是有效的 git clone https://username@github.com:username/repo_name < / p >

我遇到过这个问题几次,每次我登陆这个页面,尝试了所有的东西,都失败了!

这是因为我启用了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回购链接足够好!)
  3. 输入您的用户名,并使用访问令牌作为密码!!

更新:

  • 如果您不介意在命令行中暴露您的访问令牌,您还可以将访问令牌粘贴为用户名,然后单击回车(不需要密码)。
  • 讨厌一遍又一遍地复制粘贴访问令牌?< br > 使用git config credential.helper store(不要在你不信任的机器上这样做)

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

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

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

我有一个公司(私人)帐户,启用了2因素身份验证,所以我必须结合一些帖子,使其工作如下。(记下来,这样可能对有同样情况的人有用)

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凭证管理器它也会增加问题。我 在移动到下面的步骤之前,删除了以这种方式存储的github凭据

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

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

我需要一种非交互式的方法来克隆私有回购。

受此问题启发:https://github.com/github/hub/issues/1644

步骤1。

在github开发者设置中创建个人访问令牌: https://github.com/settings/tokens < / p >

步骤2。

git clone https://$token:x-oauth-basic@github.com/$username/$repo.git

当从启用2FA的私有回购中克隆时,您需要遵循简单的步骤

  1. 转到你的Git帐户
  2. 进入设置->开发人员设置->个人访问令牌
  3. 单击Generate new token
  4. 创建一个带有您想要的标题和功能的令牌
  5. 当您克隆私有回购时,通过使用git clone repoName,在输入您的用户名后,提供个人访问令牌作为密码。

当您获得私有回购的身份验证失败错误消息时,请执行相同的步骤

如果您确定您没有启用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

如果你想在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} .

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

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

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

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

现在使用这个生成的密码,而不是使用特殊字符并运行命令。

希望这能解决问题。

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

当你试图从回购中使用私有回购时,你需要传递用户名和密码。

在2022年使用HTTPS克隆私有存储库

如果存储库的维护者在他的私有库中允许开发人员访问你,你需要首先用你收到邀请的用户登录https://gitlab.com/users/sign_in,你会被提示修改密码,一旦你修改了密码,你就可以成功克隆存储库,并将更改推到它

我使用Android Studio从GitHub私有存储库和双因素身份验证(2FA)克隆项目。我在lzl124631x的回答中创建了一个个人标记

然后我用这样的url克隆了repo: https://YourGitHubUsername: YourGeneratedPersonalToken@github.com/YourRepoPath.git < / p >

我认为值得一提的是,如果由于某些原因不能使用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“;参见字符编码 < / p >
$ git clone https://username:password@github.com/user/repo

这条线就可以了

  1. 假设我有一个包含特殊字符的密码(我不知道在我的密码中替换什么'@')
  2. 如果我想使用我原来的密码以外的其他临时密码怎么办
为了解决这个问题,我鼓励使用GitHub开发者选项来生成访问令牌。 我相信访问令牌是安全的,你不会发现任何特殊字符

creating-a-personal-access-token

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

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

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

确保您已选中repo对私有存储库的完全控制  this is the snap short < / p >

如果启用了双因素身份验证,请确保创建了访问令牌,并且重新生成了一个旧的访问令牌。

这似乎对我不起作用。

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!

(*)更多信息见在这里

解决方案:2022年2月

  1. settings > developer settings > personal access token链接:https://github.com/settings/tokens
  2. 点击generate new token
  3. 选择作用域(启用全部以完全访问)

这将生成一个令牌,看起来像这样:

enter image description here

现在使用以下命令:

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


更新2021年(过时)

过时的:正在尝试以下命令:

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

将在以下错误中解决:

Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

并将您链接到以下支持页面:

https://docs.github.com/ en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token



方案2021(过时)

单击图标配置文件并转到(使用上面的链接获取更多指导):

settings> developer settings> personal acces token > generate new token

2022年4月更新:

你可以从您的帐户克隆一个私有存储库,如果你是其所有者或成员,你也可以从组织克隆一个私有存储库

* pat is pat (Personal Access Token)

git clone https://<pat>@github.com/<your account or organization>/<repo>.git

要从您的帐户或组织克隆一个私有存储库,您需要在您的Github帐户上生成一个PAT(个人访问令牌),并将其添加到上面的命令中。*组织没有PAT生成器。

这是如何在你的Github帐户上生成一个PAT:

1,转到“Settings":

enter image description here

2,向下滚动,然后进入“开发商settings":

enter image description here

3.“个人访问令牌”;,然后按生成新标记;:

enter image description here

4,填写“Note",然后检查“repo":

* 如果"repo"未选中,则不能克隆私有存储库。

enter image description here

5,向下滚动,然后按“生成token":

enter image description here

最后,生成一个帕特:

enter image description here

这是带有上面生成的PAT的命令:

git clone https://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@github.com/<your account or organization>/<repo>.git

我可以创建一个SSH密钥并使用它来克隆存储库。命令将保持不变:

git clone git@github.com:DriveWealth/my-repo-name.git
git clone https://{personal access token}@github.com/Shuai1996/Root.git