我怀疑您的问题可能源于git pull其语义上的特殊转折——让我们引用git pull手册:
还支持一些快捷表示法。
...
不带冒号的参数 <ref> 等效于 <ref>: 在拉取/获取时,因此它会将 <ref> 合并到当前分支中,而不会将远程分支存储在本地任何地方
这意味着当你做
git pull
或者
git pull origin
branch.<name>.remote(在后一种情况下也依赖于branch.<name>.merge配置变量),然后获取远程 repo 拥有的所有分支,并相应地更新本地存储库中的远程分支。
但是当你这样做时git pull origin branch-x,repo "origin" 中的分支 "branch-x" 的对象被获取1,本地 repo 中没有远程分支被更新,然后获取的 tip 对象被合并到当前签出的分支中.
因此,要解决您的情况,只需运行git fetch origin并更新您的远程分支。您可能需要考虑阅读这篇博文,以更好地了解为什么在所有可能的情况下git pull不完全等同于git fetch+ 。git merge
解决origin/branch-x远程分支情况的另一种方法是git push origin branch-x假设您的本地branch-x设置为跟踪origin/branch-x- 这是因为当您推送跟踪分支时,Git 知道远程仓库中的接收分支现在看起来与您刚刚推送的分支完全一样因此更新匹配的远程分支是一件明智的事情。如果您对这些概念(远程分支与跟踪分支)不满意,请从阅读本书的这一部分开始。
1好吧,实际上只获取本地存储库中缺少的对象。