Git 为什么是;吉特分行“;在新存储库中保持沉默?

Git 为什么是;吉特分行“;在新存储库中保持沉默?,git,git-branch,Git,Git Branch,当您创建一个新的存储库并运行git branch时,它会自动退出。例如: $ mkdir /tmp/foo; cd /tmp/foo; git init Initialized empty Git repository in /tmp/foo/.git/ $ git branch 为什么命令不提供任何输出或显示主分支?TL;博士 目前还没有分支机构负责人 详细说明 Git存储库在您第一次提交之前没有分支。新初始化的存储库将HEAD设置为refs/heads/master,但refs/head

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

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

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

TL;博士 目前还没有分支机构负责人

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

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

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

另见
  • 吉特分行(1)
  • git提交树(1)
  • git符号参考(1)
  • git更新参考(1)
  • gitcore教程(7)

  • 是的,您首先需要执行

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

    命令。

    请注意,分支只是指向提交的指针。
    因为一个空的回购协议(带its)没有提交,所以您没有分支

    第一次提交将创建一个名为“
    master
    ”的分支,因为
    HEAD
    引用了
    refs/heads/master

    如果要在不同的分支(而不是主分支)上创建第一次提交,则需要更改HEAD first的符号ref(如中所述):


    然后做出第一次承诺。

    很好地解释了后面发生的事情。这将帮助用户了解git是如何工作的。
    git symbolic-ref HEAD refs/heads/non-master