Git fetch不从远程获取最新的提交



我有一台双机(Mac和Win)设置,我需要将更改从Windows机器转移到Mac。所以我在Win机器上进行更改,提交并将其推送到GitHub。到目前为止,一切顺利。(我已经确认新的提交确实在GitHub上)

但是我最近开始在Mac上有一个问题,git fetch origin不从GitHub获取新的提交。因此,git pull(有问题的分支签出)告诉我它已经是最新的。

该存储库是一个子模块。我查看了两台机器上子模块的配置文件,它们对远程和分支具有相同的设置。它们看起来如下(将帐户和分支名称更改为通用名称)。

[remote "origin"]
url = git@github.com:upstream/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
pushurl = git@github.com:personal/myrepo.git
[remote "upstream"]
url = git@github.com:upstream/myrepo.git
fetch = +refs/heads/*:refs/remotes/upstream/*
[branch "mybranch-name"]
remote = origin
merge = refs/heads/mybranch-name

我的问题是,有没有人知道为什么git fetch origin从Mac忽略了远程存储库中的新提交?是否有一种方法可以强制它从GitHub上的实际远程存储库获取?(因为很明显这并没有发生)

目前我对upstream远程有部分写访问,这允许我通过在那里推我的分支来解决这个问题,然后将其拉入Mac上的本地分支(然后从Mac上推到origin)。但是我很快就会失去对upstream的写访问权限。

如果有关系,我通常使用SourceTree来管理git,但在这种情况下,我一直在直接从命令行执行git命令,行为没有区别。我有其他几个子模块没有这个问题,主存储库也没有。

单独urlpushurl可疑:

[remote "origin"]
url = git@github.com:upstream/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
pushurl = git@github.com:personal/myrepo.git

git remote文档所说:

请注意,推送URL和获取URL,即使它们可以设置不同,仍然必须引用相同的位置。推送到推送URL的内容应该是你立即从fetchedurl中取回时看到的内容。如果你想从一个地方获取(如你的上游)和推到另一个(例如,发布存储库),使用两个单独的遥控器。

这个警告,不幸的是,显然只在git remote文档中找到;它可能也应该在git fetch,git pushgit config文档中。

(正如你在评论中确认的那样,这似乎是基本问题,显然SourceTree这样做的原因只有SourceTree知道)

最新更新