Git 桌面客户端不显示所有远程分支



我的理解是这两个命令应该向我显示所有远程分支

git branch -a
git branch -r

但是当我执行这两个命令时,我没有看到最近创建的分支。

我可以在 Web 用户界面中看到这个分支。 但当我这样做时不会git branch -a

即使我可以在 Web UI 中看到这个分支。 当我尝试做

git 分支 --set-upstream-to=origin/feature/branch feature/branch it say

error: the requested upstream branch 'origin/feature/branch' does not exist

有趣的是,如果我删除本地目录并再次执行git clone,则它可以看到新分支。

有谁知道为什么 git 命令行客户端看不到新分支?

Git 只通过非常特定的命令通过网络进行通信。 否则,它将使用任何远程存储库的本地缓存副本。 当您运行git branch -r时,正在检查的是此本地缓存。 origin/feature/branch是本地缓存中的"远程跟踪分支"。 因此,您的遥控器的本地副本已经过时了。

要更新,请运行 git fetch [remote-name] 。 这是一个完全安全的操作,不会影响您的本地分支,它只会使您的本地缓存与远程同步。 git pull也会更新,因为它基本上是一个git fetch加一个git merge,但你必须担心合并。

稍微扩展一下@Schwern答案。Git 中几乎每个操作都是本地的。除非被告知它从不检查远程更改。您的本地副本有一个存储在 .git 文件夹中的数据库。当您运行像git branch -a这样的命令时,它会检查本地数据库而不是远程数据库本身。

这就是为什么每当远程发生更改时,您都需要更新此本地数据库以获取最新更新,git fetch执行此操作。它只更新您的本地 git 数据库,而不对代码本身进行任何修改。

这种情况经常发生在我身上。为了解决,我只是运行git pull,所以 git 会意识到新分支。

最新更新