2

当您创建一个新的存储库并运行git branch时,它会静默退出。例如:

$ mkdir /tmp/foo; cd /tmp/foo; git init
Initialized empty Git repository in /tmp/foo/.git/

$ git branch

为什么该命令不提供任何输出或显示主分支?

4

3 回答 3

8

TL;博士

还没有分支头。

详细说明

在您进行第一次提交之前,Git 存储库没有分支。一个新初始化的存储库将 HEAD 设置为 refs/heads/master,但 refs/heads/master 在第一次提交之前不会存在或包含提交指针。

在提交期间,Git 取消引用符号引用 HEAD 以查找当前分支的头部,然后使用 git-commit-tree 提供的提交哈希更新该头部。

最终结果是git branch在新的存储库中没有什么可报告的。在没有分支头的情况下,它只是以零退出状态静默终止。

也可以看看

  • git 分支(1)
  • git-commit-tree(1)
  • git-symbolic-ref(1)。
  • git-update-ref(1)
  • gitcore 教程(7)
于 2012-06-18T06:34:29.820 回答
2

请注意,分支只是指向提交的指针。
由于一个空的仓库(带有它的空树)没有提交,所以你没有分支。

第一次提交将创建一个名为 ' master' 的分支,因为HEAD引用refs/heads/master. 如果您想在不同的分支
上创建第一个提交(而不是),则需要首先更改 HEAD 的符号引用(如本线程中所述):master

git symbolic-ref HEAD refs/heads/non-master 

然后进行第一次提交。

于 2012-06-18T07:55:05.163 回答
0

是的,您首先需要执行

$ git add .
$ git commit -m 'first commit'

命令。

于 2012-06-18T06:45:06.100 回答