ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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


c
charlchad

这对我有用:

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


谢谢你。但我不知道为什么会这样。从未提示输入密码。 git clone 通过 https 是否应该以任何方式触摸我的 ssh 密钥?我以为不是。
很好,它让我能够在 Ubuntu 上下载一个私人仓库。
@diimdeep Git 和其他工具,经常使用 git: 协议来访问远程存储库中的文件。某些防火墙配置会阻止 git:// URL,这会在尝试克隆存储库或下载依赖项时导致错误。 (例如,公司防火墙因阻止 git: 而“臭名昭著”。)如果遇到此问题,可以强制使用 https:,而是通过运行以下命令:git config --global url。"https:// ".insteadOf git://
在某些情况下,如果系统提示您输入密码然后拒绝访问,这可能是因为您需要提供“个人访问令牌”而不是您的 GitHub 登录密码。 [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
答案是错误的,SSH 密钥与 HTTP 访问无关。
m
mac

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

git:// URL 是只读的,而且私人存储库似乎不允许这种形式的访问。


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

我已经多次遇到这个问题,每次我登陆这个页面时,都尝试了一切,但都失败了!

这是因为我启用了 2FA!

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

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

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

更新:

如果您不介意在命令行中公开您的访问令牌,您也可以将访问令牌粘贴为用户名,然后按回车键(无需密码)。

讨厌一遍又一遍地复制和粘贴访问令牌?使用 git config credential.helper store (不要在你不信任的机器上这样做)


如果您使用的是 Windows,则可以安装 github.com/microsoft/Git-Credential-Manager-for-Windows 然后在克隆私有存储库时,会出现带有 Github 登录的 UI 窗口。它还可以让您填写 2FA 代码。您的 Github 凭据将被安全存储。
谢谢你,另一种方法是像这样设置 url 格式:https://username:access_token@github.com/username/repo_name.git 如果我有公共 repo 更改为 private,这对我很有帮助。我需要做的就是使用该格式更改远程源。
i
izik f

这对我有用:

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

这对于特殊字符密码有问题,将您的密码留在日志中并且似乎不再起作用
试试这个 - 系统将提示您输入您的帐户密码。无需担心密码泄露历史或日志。 git clone https://username@github.com/username/repo_name.git
使用密码的身份验证将在 2021 年 8 月 13 日弃用,此后将不再有效。 github.blog/…
如果您使用个人访问令牌,这仍然有效,并且可以轻松编写脚本以提示输入令牌 (read -s)。
K
Kai - Kazuya Ito

2022 年 4 月更新:

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

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

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

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

这是您在 Github 帐户上生成 PAT 的方式:

1、进入“设置”:

https://i.stack.imgur.com/3VrIs.png

2,向下滚动然后转到“开发人员设置”:

https://i.stack.imgur.com/uDsJm.png

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

https://i.stack.imgur.com/QtFtT.png

4、填写“Note”然后勾选“repo”:

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

https://i.stack.imgur.com/3HshU.png

5,向下滚动然后按“生成令牌”:

https://i.stack.imgur.com/Nxmr0.png

6、最后生成一个PAT:

https://i.stack.imgur.com/9XEDY.png

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

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

2022 年为我工作。
厉害了,就是这个方法!
B
Black Mamba

对我来说,解决方案是:

git clone https://myusername@restoftherepolink.git

在这里,您需要成为 repo 的所有者,但如果您不是,那么它将成为

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

如果您有 2FA enabled,那么:

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

https://i.stack.imgur.com/BXYZw.png


如果没有具有该 URI 的公共存储库,则看起来像 git 提示输入用户名/密码,所以第一个命令是正确的
在第 4 步的 2FA 方法中,克隆命令中提到的主机在哪里?
是的,其中 https://myusername@restoftherepolink.git 是您尝试克隆的存储库,这些设置在您自己的用户设置中可用。
G
Gustavo Coelho

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

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


我同意不必设置 ssh 的简单性
同意其他评论,仅使用 HTTPS url 在 Windows 或 Ubuntu 上完美运行(在 116.04 上尝试过)
A
Aman Neo

正如每个人都知道克隆的过程,我想在这里添加一些东西。不用担心特殊字符或将“@”写成“%40”see character encoding

$ 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 替换我的原始密码,现在我不担心有人看到我的访问凭证,我可以随时重新生成令牌。

https://i.stack.imgur.com/iLCbR.png


好,答案在 google colab 中效果很好,在共享 .ipynb 文件之前更改您的密码 :)
L
Luhn

解决方案:2022 年 2 月

转到设置 > 开发人员设置 > 个人访问令牌链接:https://github.com/settings/tokens 点击生成新令牌 选择范围(全部启用以获得完全访问权限)

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

https://i.stack.imgur.com/Z24Hk.png

现在使用以下命令:

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


这显然发生了轻微的变化。 git clone https://user:TOKEN@github.com/username/repo.git 为我工作
R
RtmY

2021 年 8 月 13 日更新

here

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

你今天需要做什么

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

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

在命令行上使用令牌

) 创建个人访问令牌 - 遵循 this

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

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

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

(*) 在 here 中查看更多信息。


git clone https://[USER]:[TOKEN]@github.com/username/repo.git 也有效!
o
oneworld

我有一个公司(私人)帐户并启用了 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 凭据管理器中为您的帐户存储了不正确的密码,它也会增加问题。在转到以下步骤之前,我删除了以这种方式存储的 github 凭据。

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

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


美元符号 $ 是 Unix 中的保留字符。它标志着检索变量值的开始,该变量值的名称等于 $ 符号后面的字符串。
对我来说,删除 Windows 凭据解决了这个问题。
c
cnash

我需要一种非交互式方法来克隆私人仓库。

受此问题启发: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

i
ireshika piyumalie

从启用 2FA 的私人仓库克隆时,您需要遵循一个简单的步骤

转到您的 Git 帐户转到设置-> 开发人员设置-> 个人访问令牌单击生成新令牌创建一个具有所需标题和功能的令牌当您克隆私人存储库时,使用 git clone repoName,输入您的用户名,提供个人访问令牌作为密码。

当您收到私有仓库的身份验证失败错误消息时,请按照相同的步骤操作


M
MK Yung

作为对 mac 的回答,您可以在您的 github 存储库页面上获取您的 SSH 克隆 URL,方法是单击 You can clone with HTTPS, SSH, or Subversion. 上的 SSH 并复制 URL。


U
Usman Hussain

这在 mac git clone https://username@github.com:username/repo_name 上对我有用


p
pgcd

除了 MK Yung 的回答:如果您不想收到 403 Forbidden 响应,请确保将要部署的任何位置的公钥添加到 repo 的部署密钥中。


g
gcamargo

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

获得密钥后,您必须将其添加到您的 github 帐户:https://github.com/settings/ssh

对于 Windows 用户,以管理员身份运行 git bash 很有用。

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


K
Kexin Lu

如果您确定您没有启用 2FA,您有权访问 repo,并且 repo 存在,那么您的 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 抱歉,应该是 ssh -T git@github.com
K
Kishore Relangi

在 github 中添加您的桌面 ssh 公钥。

https://github.com/settings/keys

您可以在没有任何密码的情况下克隆 repo。


A
Amjad

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

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

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


Y
Youngjae

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

S
Santosh Kadam

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

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

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

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

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

希望这能解决问题。


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

当您尝试使用来自回购的私人回购时,您需要为此传递用户名和密码。


这是不安全的。克隆的 repo 将提供的 http 链接存储在 .git/config 文件中。所有对本地仓库的提交都可以推送到远程,而不需要用户名和密码。如果您不是唯一的用户,那真的很危险!
好吧,如果它在 GOOGLE COLABORATORY 中对我有用!
M
MeLean

我正在使用 Android Studio 从 GitHub 私有存储库和双因素身份验证 (2FA) 克隆项目。我创建了一个 lzl124631x's answer 中的 personal token

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


M
Marcin Kłopotek

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

可以使用 http.extraHeader git-config option 配置基本身份验证标头:

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] 占位符应替换为生成的真实令牌值(包括方括号)。您可以阅读有关访问令牌 herehere 的更多信息。

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


S
Sabito 錆兎 stands with Ukraine

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

在我的情况下,这似乎不起作用。


T
Taimur

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

如果存储库的维护者已在其私有库上授予开发人员访问您的权限,您需要先使用您的用户登录到 https://gitlab.com/users/sign_in收到邀请,系统会提示您更改密码,一旦您更改密码,您就可以成功克隆存储库,拉取并推送更改。


A
Arefe

我可以创建一个 SSH 密钥并使用它来克隆存储库。该命令将仍然相同:

git clone git@github.com:DriveWealth/my-repo-name.git

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