为什么 “git 状态” 显示我在主分支上,而 “git 分支” 不显示?

共5个回答,已解决, 标签: git

我试图自动化一个过程,并发布git branch command to find out what branch I am on. Everything is working fine except for a newly initialized repo where git branch returns nothing. Given I've done nothing with the repo, not even the initial commit, I can accept the answer. However, if I run a git status it tells be I'm on the master分支,如下所示:

$ Mkdir todelete
删除 $ cd
$ Git 初始化
在/u/u700 21a/todelete/.Git 中初始化空 git 存储库
$ Git 状态
分公司师傅

还没有提交

无需提交 (创建/复制文件并使用 “git add” 跟踪)
$ Git 分支
$

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

我对 Git 也有一些新的人,我无法向他们解释为什么向你展示他们所在的分支的命令什么也没有显示,但是 status 命令显示了。

第1个答案(采用)

我对另外两个答案投了赞成票,但我认为思考这个问题的方法很简单:你可以在一个不存在的分支上。那就是正常也在新的空存储库中,因为要存在分支名称,该分支名称必须标识现有有效提交的散列 ID。新的空存储库没有提交,因此还不允许存在分支名称。

尽管如此,你最初是在一些分行。您所在的分支是名称存储在特殊名称中的分支HEAD. In a new, empty repository, Git stores the name master (more precisely, refs/heads/master—the full name of the branch) in HEAD, so you are on master, while master不存在。

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

$ Git 初始化
在 [路径中初始化空 Git 存储库]
$ Git 结账-b asdf
转到一个新的分支机构
$ Git 结账-你好
切换到新的分支 “hello”

每当你在一个不存在的分支上时,你所做的下一次提交创建分公司。这也是怎么git checkout --orphan工作。

第2个答案

git branch shows nothing because there is no branch. But, as you can read in man git init:

这个命令创建了一个空的 Git 存储库,基本上是对象有子目录的 git 目录, 参考文献/标题、参考文献/标签和模板文件。引用 master 头部的初始 HEAD 文件 也创建了分支。

我用粗体标注了我认为相关的部分 -- 看起来虽然还没有主分支,但是已经存在对它的引用,这就是为什么它显示在git status。提交后将创建一个适当的分支。

第3个答案

尚未出生的树枝。所以git branch doesn’t show it (git symbolic-ref HEAD indicates that your HEAD is pointing to the default branch master and that it is unborn as git branch没有显示它,也就是说,你可以在一个还不存在的分支上)。然而,提交一些东西会创建分支。

如果你结账,情况也是如此orphan分行。

我想git status显示分支名称,因为这是将要创建的分支。

第4个答案

现有的答案解决了为什么输出是什么这个字面问题,但是我认为他们已经掩盖了真正的问题.

你说你在自动化一些东西,所以我建议git status nor git branch是脚本上下文中的最佳工具。

在这个讨论中可以找到一些替代方案:如何以编程方式确定当前签出的 Git 分支

在不知道你的需求 (或者你希望未出生的分支机构如何表现) 的情况下,我不一定会提出建议,但是我想说的是, 有些命令用于人机交互 (瓷器),有些命令用于脚本 (管道)

第5个答案

在 git 中,默认分支是master。 当你提交 git 时,它会 “使用” 你现在所在的当前分支。 因为你已经初始化了一个新的存储库,你在 “默认” 分支上,这就是为什么你在分支列表中看不到它,所以一旦你提交了你的更改,它

enter image description here

enter image description here

相关问题

如何避免在源代码中保留版本号? 为什么 “git 状态” 显示我在主分支上,而 “git 分支” 不显示? 缺少 inotify 事件 (在。Git 目录