我的理解是这两个命令应该向我显示所有远程分支
git branch -a
git branch -r
但是当我执行这两个命令时,我没有看到最近创建的分支。
我可以在Web用户界面中看到此分支。但不是在git branch -a
即使我可以在Web UI中看到这个分支。当我尝试做的时候
git branch --set-upstream-to = origin / feature / branch feature / branch它
error: the requested upstream branch 'origin/feature/branch' does not exist
有趣的是,如果我删除我的本地目录并再次执行git clone
,那么它可以看到新的分支。
有谁知道为什么git命令行客户端看不到新的分支?
答案 0 :(得分:2)
Git只能通过非常具体的命令通过网络进行通信。否则,它使用任何远程存储库的本地缓存副本。当您运行git branch -r
时,正在检查此本地缓存。 origin/feature/branch
是本地缓存中的“远程跟踪分支”。所以你的本地遥控器副本已经过时了。
要更新,请运行git fetch [remote-name]
。这是一个完全安全的操作,不会影响您的本地分支,它只会使您的本地缓存与远程同步。 git pull
也会更新,因为它基本上是git fetch
加上git merge
,但您必须担心合并。
答案 1 :(得分:1)
在@Schwern上回答一下。几乎Git中的每个操作都是本地的。除非告诉它永远不会检查远程更改。您的本地副本有一个存储在.git文件夹中的数据库。当您运行git branch -a
之类的命令时,它会检查本地数据库而不是远程数据库。
这就是为什么每当远程更改时,您需要更新此本地数据库以获取最新更新,git fetch
执行此操作。它只更新你的本地git db而不对代码本身进行任何修改。
答案 2 :(得分:-2)
这经常发生在我身上。要解决,我只运行git pull
,因此git会发现新的分支。