为什么新的代码库中“git branch”命令没有输出?

3
当你创建一个新的代码仓库并运行git branch时,它会默默地退出。例如:
$ mkdir /tmp/foo; cd /tmp/foo; git init
Initialized empty Git repository in /tmp/foo/.git/

$ git branch

为什么执行命令没有输出或显示主分支?
3个回答

9

TL;DR

没有分支主线存在。

详细说明

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

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

最终结果是,在新存储库中,git branch没有任何报告。由于不存在分支主线,它只会以零的退出状态静默终止。

另请参阅

  • git-branch(1)
  • git-commit-tree(1)
  • git-symbolic-ref(1)
  • git-update-ref(1)
  • gitcore-tutorial(7)

很好的解释了后台正在发生什么。这将帮助用户理解git的工作原理。 - Ikke

2
请注意,分支只是指向提交的指针。
由于空仓库(带有其空树)没有提交,因此您没有分支。
第一次提交将创建名为'master'的分支,因为HEAD引用refs/heads/master
如果您想在与master不同的分支上创建第一个提交,则需要首先更改HEAD的符号引用(如此线程中所述)。
git symbolic-ref HEAD refs/heads/non-master 

然后进行第一次提交。


0

是的,你首先需要执行

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

命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接