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

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

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


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

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


在回应mac的答案,你可以得到你的SSH克隆URL在你的github回购页面,通过点击SSH上你可以克隆HTTPS, SSH,或颠覆。并复制URL。


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

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


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


这招对我很管用:

Git克隆https://username@github.com/username/repo_name


首先,确保您有SSH密钥或在以下位置生成一个: https://help.github.com/articles/generating-ssh-keys/

一旦你有了你的密钥,你必须把它添加到你的github帐户: https://github.com/settings/ssh

对于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,那么:

从右上角的个人资料图标进入设置或访问https://github.com/settings/profile 转到底部选项卡或转到https://github.com/settings/tokens 打开最后一个标签这里个人令牌。并生成一个令牌 复制令牌并运行git clone https://myusername@restoftherepolink.git

当提示输入密码时,把标记放在这里。


这在mac上很管用 Git克隆https://username@github.com:用户名/repo_name


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

这是因为我启用了2FA !!

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

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

按照此链接创建一个访问令牌 git克隆https://github.com/username/repo_name.git(默认的git回购链接已经足够好了!) 输入您的用户名,并使用访问令牌作为密码!!


更新:

如果您不介意在命令行中暴露您的访问令牌,您还可以将访问令牌粘贴为用户名,然后单击回车(不需要密码)。 讨厌复制和粘贴访问令牌一遍又一遍? 使用git配置凭证。辅助存储(不要在你不信任的机器上这样做)


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

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

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


我有一个公司(私人)帐户,启用了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

步骤2。

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

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

转到你的Git帐户 进入设置->开发人员设置->个人访问令牌 单击Generate new token 创建一个带有您想要的标题和功能的令牌 当您克隆私有回购时,通过使用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


我认为值得一提的是,如果由于某些原因不能使用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替换了我原来的密码, 现在我不担心有人看到我的访问凭证,我可以在任何时候重新生成令牌。

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


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

这似乎对我不起作用。


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!

(*)在这里看到更多。


解决方案:2022年2月

进入>开发者设置>个人访问令牌链接:https://github.com/settings/tokens 单击生成新令牌 选择作用域(启用全部以完全访问)

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

现在使用以下命令:

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


更新2021年(过时)

正在执行以下命令:

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

将在以下错误中解决:

密码认证支持已于2021年8月13日移除。请改用个人访问令牌。

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

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



方案2021(过时)

点击你的图标配置文件,然后转到(使用上面的链接获取更多指导):

设置>开发人员设置>个人访问令牌>生成新的令牌


2022年4月更新:

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

*pat是pat(个人访问令牌)。

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

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

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

1、进入“设置”:

2、向下滚动,然后进入“开发者设置”:

3、按“个人访问令牌”,再按“生成新令牌”:

4、填写“备注”,然后勾选“回购”:

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

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

6、最后生成一个PAT:

这是上面生成的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

2023年更好的解决方案

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

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

以下是需要遵循的步骤:

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

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

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

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

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

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

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

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

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

就是这样。