如何显示存储库中的所有分支?

Tim*_*Tim 6 git

我有一个 Git 存储库。我怎样才能显示它的所有分支?

以下两个命令是否应该显示所有分支?如果是,他们为什么不显示 branch mastermaster当询问/sf/ask/3791248331/时,我的印象是存储库没有分支分支再重新

$ git branch -a
  mongodbutils

$ git show-branch
[mongodbutils] mongodbutils

$ ls .git/refs/heads/
mongodbutils
Run Code Online (Sandbox Code Playgroud)

为什么下面的命令提到了 branch master

$ git show
fatal: your current branch 'master' does not have any commits yet
Run Code Online (Sandbox Code Playgroud)

如何显示master存储库中的所有分支(包括在这种情况下)?我认为这很重要,否则,我也会有同样的错误印象。

注:该库是由创建git init一个空目录,然后我git push一个分支mongodbutils从另一个分支到这个分支。

axi*_*iac 5

正如文档git branch解释的那样,git branch --all(或-a)列出了本地存储库中的所有分支,包括本地和远程跟踪分支。

Git 分支只是一个指向提交的指针。一个新的存储库(刚刚创建的git init)不包含任何提交。新 repo 上的当前分支是,master但该master分支实际上并不存在。事实上,一个新的存储库不包含任何分支。

master第一次提交创建时创建的分支。或者当它从远程存储库中提取时。

由于您没有创建任何提交,也没有拉取master分支,因此它不存在于您的仓库中。您列出的两个命令都向您展示了这一点。

git branch -a 是你想用来列出分支的那个。

git show-branch 旨在供脚本和 GUI 工具使用。


Sam*_*hik 4

在新创建的 git 存储库中,在将某些内容推送到主分支之前,存储库实际上处于稍微“无效”的状态。HEAD 设置为指向 master 分支,但 master 分支并不存在于存储库本身中。

git 分支与分支头部的提交同义。分支只是存储库中某个提交的别名。仅此而已。不多不少。Agit init使用 HEAD 初始化存储库,表明它是 master 分支的 HEAD,但存储库中没有实际的 master 分支。

一旦进行了第一次提交,该提交就会被推送到存储库中,并且 git 分支会被重新指向有问题的提交。每次提交都会发生这种情况,不仅仅是初始提交,而且现在,在初始提交之后,一切都按顺序进行。

您所看到的错误消息是 git 当前的、临时的、混乱状态的最终结果。如果执行git checkout mongodbutils,则分支的所有痕迹master都会消失。当然,git show然后会向您显示该分支的 HEAD 提交,并且没有错误消息,并且也git branch不会报告该master分支的任何证据。