在我的新分支branchname
上将我的最新工作提交到机器A上的本地git仓库后,我将该工作推送到我的gitlab远程仓库
$ git push origin branchname
master
分支已与远程仓库同步。所有分支出现在我的gitlab列表上的远程仓库中。
我后来去了机器B.我先做了一次
$ git pull origin master
和master已更新,但我输入branchname
后新git branch
没有显示,历史树中也没有新建的分支。我去了post并按照第一个答案的指示行事。另一个'git branch'仍未显示我的其他分支。一时兴起,我只是想做
$ git checkout branchname
它在那里并且检查完好。然后git branch
命令在我的分支列表中显示master和branchname。我用另一个分支做了同样的事情,然后它在git branch
命令之后出现在分支列表中。
这种操作是正常的git行为吗?我想知道的主要问题是,如果您从远程仓库中提取或取出以更新必须知道远程分支的先前知识的本地仓库,为什么它们不会在git branch
命令期间出现?而且,当我在git branch
之后看不到它们时,为什么我可以查看它们?
这个传奇类似于THIS一个,但是我的分支实际上就在那里,只是在我检查之前没有显示下面的git branch命令。
答案 0 :(得分:4)
$ git branch # only local branches
* master
在机器B中,branchname
在git checkout branchname
命令之前不存在为本地分支,因此列表仅显示master
。
$ git fetch
$ git checkout branchname
$ git branch
master
* branchname
查看所有远程和本地分支。
$ git branch -a # remote and local branches
$ git branch -r # remote branches only
注意:在这里,git checkout branchname
实际上找到了一个名为branchname
的本地分支。如果找到,则只检查到该分支,但如果未找到,则在远程分支列表中搜索(例如origin/branchname
)。如果找到,则创建一个具有相同branchname
历史记录的本地分支origin/branchname
。
答案 1 :(得分:2)
git branch
,没有任何参数,只显示您的本地分支。当您fetch
时,有关远程分支的信息会更新,但只有当您使用git branch -r
(仅远程分支)或@SajibKhan建议git branch -a
(所有远程分支)时才会显示和当地分支机构)。
所以是的,这是预期的行为。您可以检查它们,因为git识别远程分支并设置一个新的本地分支,该分支自动设置为跟踪远程分支。