在拉或获取之后Git Branches不显示在“git branch”中,但“git checkout”有效......?

时间:2017-10-06 03:40:04

标签: git version-control git-branch git-remote git-fetch

在我的新分支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命令。

2 个答案:

答案 0 :(得分:4)

$ git branch     # only local branches
* master

在机器B中,branchnamegit 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识别远程分支并设置一个新的本地分支,该分支自动设置为跟踪远程分支。