GitHub - https://USERNAME@github.com 和 https://github.com 之间的远程仓库有什么区别?

3

Github推荐以下URL用于设置远程库 https://github.com/{USERNAME}/{PROJECTNAME}.git [在Github上创建新的repo时].

但是当使用另一种格式 - https://{USERNAME}@github.com/{USERNAME}/{PROJECTNAME}.git - 我才能够在同一Git客户端中使用第二个帐户 [https://dev59.com/_G865IYBdhLWcg3wWtKz#27407168]。

  1. 这两种格式有什么区别?
  2. github.com前面添加{USERNAME}@会产生什么影响?
3个回答

1
它会影响使用哪个缓存的密码。
如果您的git cconfig credential.helper设置为manager-core,则HTTPS URL可以触发凭据缓存。
在URL中添加username@可强制助手使用正确的用户名,从而帮助检索正确的密码。

默认情况下使用此URL格式是否有意义?

仅当您有多个帐户时才有意义。如果没有,它并没有太大的作用。

该代码库的Git配置未设置credential.helper。它是否默认设置为manager-core - Ben Carp
我刚刚检查了用户文件夹中的.gitconfig[credential]helper = store - Ben Carp
默认情况下使用这种URL格式是不是很有意义呢? - Ben Carp
@BenCarp Store是基本的凭证缓存机制:https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage。manager-core更安全,但根据您的环境可能未安装。 - VonC
1
如果您在同一台工作站上有多个用户,或者正在使用多个帐户,则需要。否则,不必要。 - VonC

1

如果你想在未登录的情况下克隆一个仓库,以下内容将提示你输入密码

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

如果您检查gitconfig文件,programfiles->git->etc->gitconfig,您会注意到凭证助手设置为manager-core。您可以从本地访问/克隆多个GitHub帐户。使用用户名可以使用/缓存相应的帐户凭据。

enter image description here

在 CI/CD 管道中,当我们配置第一步从远程代码库检出代码时,我们从凭据管理器/助手中选择用户名和密码。
git pull https://${GIT_USERNAME}:${GIT_PASSWORD}@github.myorg.com/myrepo.git

在我们的系统中,本地凭据是基于用户名从缓存中获取的,大体上就是这样。

对于ssh,在指定git@github.com:username/repo.git时,它只是告诉git用户是git本身,并且应该从ssh-agent获取主机github.com的凭据(公钥)。

您还可以为特定主机设置用户名。

[credential "https://example.com"]
 username = foo

参考:- http://git-scm.com/docs/gitcredentials

参考:- https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage


-1

也许你已经注意到有时候 git 会要求你输入密码,这可能是由于 SSH 密钥被加密或者由于 HTTP 协议收到了不成功的响应。

通过发出 https://{USERNAME}@something,你实际上是遵守了协议提供凭据的形状(URL 解剖学)。完整的形式应该是:

protocol://username:password@domain:port/path?query=value&query2=value2#anchor

因此,如果您想要的话,即使使用明文密码(并将其记录在控制台历史记录中,这是不推荐的),您也可以提供密码。

HTTP 凭据很可能会触发 以下状态之一

  • 401 未经授权
  • 403 禁止访问
  • 407 代理服务器认证

Git 检查这些状态,并基于 *-Authenticate 标头,在使用 HTTP 协议时将其发送回 Git 服务器。

如果没有通过 URL 提供凭据,则 Git 必须找到另一种提供凭据的方式(如果需要),例如前面提到的 凭据助手


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