2017-10-06 331 views
2

提交上一个新的分支branchname到机器A我的本地git仓库我最新的作品后,我推说工作,我gitlab远程回购与Git分支在Pull或Fetch之后不显示在“git分支”中,但“git checkout”可以工作......?

$ git push origin branchname 

master分公司已经在同步与远程回购。我的gitlab列表中的所有分支都显示在远程回购站点上。

我后来去了机器B.我第一次做了

$ git pull origin master 

和掌握已更新,但我的新branchname没有露面当我输入git branch,也没有我的新存在另一个分支历史树。我去了post,并按照第一个答案的指示。另一个'git分支'仍然没有显示我的其他分支。一时兴起,我只是试图做

$ git checkout branchname 

它在那里,检查出来很好。然后命令git branch在我的分支列表中显示master和branchname。我对另一个分支做了同样的事情,然后它在git branch命令后出现在分支列表中。

这种操作是否是正常的git行为?我想知道的主要问题是,如果您从远程仓库获取或获取更新本地仓库,必须知道远程分支机构的先前知识,为什么它们不会在git branch命令期间显示?而且,为什么我可以在git branch之后看不到他们时检查它们?

这个传奇类似于THIS之一,但我的分支实际上只是没有显示下面的git分支命令,直到我检查出来。

+2

'git branch -a'显示远程和本地分支,'git branch'只显示本地分支。在机器B中,'branchname'在'git checkout branchname'命令之前并不存在为本地分支。 –

回答

2
$ 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

谢谢Sajib。我已经完成了这些实验,但是您的回答和kowsky的解释让我更好地理解了git在这个特定场景中的哲学。 –

2

git branch,没有任何参数,只显示您当地的分行。当您使用fetch时,有关远程分支机构的信息会更新,但只有在您使用git branch -r(仅限远程分支机构)或@SajibKhan建议的git branch -a(所有远程和本地分支机构)时才会显示。

所以是的,这是打算的行为。你可以检查出来,因为git识别远程分支并设置一个新的本地分支,该分支自动设置为跟踪远程分支。

+0

谢谢kowsky。我的进一步实验证实了你的解释。我只是不了解这个特定场景中的git哲学。现在有道理。 –