为什么“git branch”在新的存储库中保持沉默?

时间:2012-06-18 06:34:29

标签: git git-branch

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

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

$ git branch

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

3 个答案:

答案 0 :(得分:8)

TL; DR

尚无分支头。

详细说明

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

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

最终结果是git branch无法在新存储库中报告。如果没有分支头,它只是以退出状态为零静默终止。

另请参阅

  • git的分支(1)
  • GIT中提交树(1)
  • GIT-符号-REF(1)。
  • GIT中更新-REF(1)
  • gitcore教程(7)

答案 1 :(得分:2)

请注意,分支只是指向提交的指针 由于空的仓库(其empty tree)没有提交,因此您没有分支。

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

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

然后进行第一次提交。

答案 2 :(得分:0)

是的,您首先需要执行

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

命令。