【问题标题】:Where does git store default user info for pulls?git 在哪里存储拉取的默认用户信息?
【发布时间】:2021-01-21 20:05:43
【问题描述】:

请注意:我知道这个问题可能看起来类似于this one 和其他可能,但我向您保证它不是重复,因为我能够查明比其他问题更具体的问题,而且我相信我的具体问题需要一个独特/独特的答案。


Mac OSX 10.13.6 在这里。

我是几个不同 git/GitHub 存储库的提交者。我已经使用一个 GitHub 用户对这些存储库进行了多次提交(我们称之为“some.random.dev1.example.com”或简称 SRD1)。我现在需要从不同的 GitHub 用户对同一个 repos 进行一些提交,比如来自同一台机器的“some.random.dev2.example.com”或 SRD2)。

所以我更新了~/.gitconfig 中的user.nameuser.emailuser.username 字段,以匹配我的SRD2 用户。然后,为了更好地衡量,我在我的 OSX 钥匙串访问管理器中清除了 2 个不同的 github.com 密钥。

我还删除了与我的 SRD1 用户关联的两个旧 SSH 和 GPG 密钥,并用与我的 SRD2 用户关联的两个新密钥替换它们。

我只是去提取其中一个存储库(以提取其他开发人员在过去几个月中所做的任何更改),然后我得到了:

$ git pull
remote: Repository not found.
fatal: repository 'https://some.random.dev1.example.com@github.com/IdeaEvolver/cutter-platform-app.git/' not found

因此,似乎当我在回购上执行git pull 时,它默认(以某种方式)与我的some.random.dev1.example.com 用户(不再有权访问回购)一起拉动。从现在开始,我只想使用我的 SRD2 用户。如何覆盖这个默认值,这个默认值存储在哪里?

【问题讨论】:

  • 你真正的问题是为什么不能从两个不同的 GitHub 存储库中提取数据?
  • 你为什么认为我从两个不同的 repos @GregBurghardt 中提取?他们是同一个回购。我试图从同一个 repo 中提取,但使用不同的 user(“SRD2”)。 FWIW,SRD2 确实可以访问 repo。
  • 好的,所以你的问题是如何使用两个不同的用户拉到同一个存储库。你能更新你的问题标题吗?真正的问题有点难以理解。
  • 你试过Git - remote: Repository not found提出的解决方案了吗?这是一个较老的问题,没有公认的答案。
  • 查看那个 repo 的.git/config。您使用的是 https URL,因此 ssh 和 gpg 与它无关。 git remote -v 也将被证明是有用的。

标签: git macos github ssh keychain


【解决方案1】:

Git 将有关存储库的信息存储在 repo 的 .git/config 中。可以手动编辑,但最好使用git remote等命令行工具。 git remote -v 将显示您的存储库使用的 URL。

在该文件中,我看到 url = https://some.random.dev1.example.com@github.com/SomeExampleOrg/SomeRepo.git

我还删除了与我的 SRD1 用户关联的两个旧 SSH 和 GPG 密钥,并用与我的 SRD2 用户关联的两个新密钥替换它们。

由于您使用的是 HTTPS 网址,SSH 和 GPG 都没有任何影响。

所以我更新了 ~/.gitconfig 中的 user.name、user.email 和 user.username 字段,以匹配我的 SRD2 用户。

身份验证不使用 user.name 或 user.email,它们仅用于提交。没有用户名。有关所有配置选项,请参阅 git-config

您的实际凭据使用credential helper 存储,在 OS X 上表示钥匙串。


您已在存储库 URL 中硬编码您的用户名。把它改成 Github 提供的 URL。

git remote set-url origin https://github.com/SomeExampleOrg/SomeRepo.git

请参阅 Github 的 Which remote URL should I use? 了解更多信息。


这会影响 git 历史或与 git 相关的任何其他内容吗?

如果您使用相同的 URL,减去用户名,除了您的身份验证之外,它不会改变任何内容。它不会影响您的 Git 历史记录。

如果您使用指向不同存储库的不同 URL,那么是的,git pull 会尝试将您的本地分支与不同的远程合并。如果存储库不相关,它将拒绝拉取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-16
    • 2012-11-08
    • 2010-11-06
    • 2013-02-23
    • 2013-10-04
    • 2017-01-02
    • 2019-01-31
    • 2014-10-10
    相关资源
    最近更新 更多