gpt4 book ai didi

git - 为什么 "git status"显示我在主分支上,而 "git branch"不在新创建的存储库中?

转载 作者:IT王子 更新时间:2023-10-29 00:32:29 25 4
gpt4 key购买 nike

我正在尝试自动化一个流程并发出 git branch 命令来找出我所在的分支。除了 git branch 不返回任何内容的新初始化 repo 之外,一切都工作正常。鉴于我对 repo 没有做任何事情,甚至没有对最初的提交做任何事情,我可以接受这个答案。但是,如果我运行 git status,它会告诉我我在 master 分支上,如下所示:

$ mkdir todelete
$ cd todelete
$ git init
Initialized empty Git repository in /u/u70021a/todelete/.git
$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
$ git branch
$

我做错了什么吗?是否有一些设置我没有正确设置?

我也有一些 Git 新手,我无法向他们解释为什么显示他们所在分支的命令什么也没显示,而 status 命令却显示。

最佳答案

我赞成另外两个答案,但我认为思考这个问题的方式很简单:你可以在一个不存在的分支上。这是正常一个新的空存储库,因为要存在分支名称,该分支名称​​必须标识现有有效提交的哈希 ID。一个新的空存储库没有提交,因此还不允许存在任何分支名称。

尽管如此,您最初是在一些 分支上。您所在的分支是名称存储在特殊名称 HEAD 中的分支。在一个新的空存储库中,Git 将名称 master(更准确地说,refs/heads/master——分支的全名)存储在 HEAD,所以你在 master 上,而 master 不存在。

您可以使用 git checkout -b 更改您所在的不存在的分支:

$ git init
Initialized empty Git repository in [path]
$ git checkout -b asdf
Switched to a new branch 'asdf'
$ git checkout -b hello
Switched to a new branch 'hello'

无论何时您在一个不存在的分支上,您进行的下一次提交都会创建该分支。这也是 git checkout --orphan 的工作方式。

关于git - 为什么 "git status"显示我在主分支上,而 "git branch"不在新创建的存储库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57051056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com