为什么我在Git上创建的分支没有出现?

为什么我在Git上创建的分支没有出现?,git,Git,这就是我正在做的: C:\Users\username\Dropbox\myproject\androidapp\build>git branch -D master 错误:找不到分支“主” C:\Users\username\Dropbox\myproject\androidapp\build>git checkout -b master Switched to a new branch 'master' C:\Users\username\Dropbox\myproject\

这就是我正在做的:

C:\Users\username\Dropbox\myproject\androidapp\build>git branch -D master
错误:找不到分支“主”

C:\Users\username\Dropbox\myproject\androidapp\build>git checkout -b master
Switched to a new branch 'master'

C:\Users\username\Dropbox\myproject\androidapp\build>git branch

C:\Users\username\Dropbox\myproject\androidapp\build>git branch -a

C:\Users\username\Dropbox\myproject\androidapp\build>
我看到消息:切换到一个新的分支“主”。为什么新的分支“主”不存在,而我显然能够切换到分支“主”呢

切换到新的分支“主分支”

git checkout-b
创建分支

切换到新的分支“主分支”


git checkout-b
创建分支

在一个全新的存储库中,根本没有分支

尽管如此,您仍在分支
主机上。同时,分支
master
不存在

这怎么可能?这是一种矛盾的状态:在Git中,分支名称标识该分支的提示提交,因此分支名称必须指向某个现有提交。但是没有提交,因此
master
不能指向任何提交

Git通过命令您可以访问不存在的分支来解决这个特殊的难题(以及与Git checkout相关的难题--Orphant newbranch
)。要在分支上,Git只需将该分支的名称存储在
头文件中。然后,一旦您进行了一次提交,分支名称实际上就出现了,指向新的提交,它是一个新的根提交,即没有父级

(这是一个实现细节,你不应该依赖它,但是你可以偷看一下:
cat.git/HEAD
,你会看到它包含
ref:refs/heads/master
,表明你在分支
master
。无论分支
master
是否存在,这都是正确的!读取
HEAD的官方方法
类似的是
git symbolic ref HEAD
git rev parse--symbolic full name HEAD
git rev parse--abbrev ref HEAD
。这三种行为方式都有细微的不同,因此我们可以根据对分离的HEAD case的需求来选择要使用的程序和选项。)


目前,
git branch
只列出了实际存在的分支。这在将来可能仍然是正确的,但谁知道呢?

在一个全新的存储库中,根本没有分支

尽管如此,您仍在分支
master
上。同时,分支
master
不存在

这是怎么回事?这是一种矛盾的状态:在Git中,分支名称标识该分支的提示提交,因此分支名称必须指向某个现有提交。但是没有提交,因此
master
不能指向任何提交

Git解决了这个特殊的难题(以及与Git checkout相关的难题--orphan newbranch
)通过命令你可以在一个不存在的分支上。要在一个分支上,Git只需将该分支的名称存储在
HEAD
文件中。然后,一旦你进行了一次提交,分支名称实际上就出现了,指向新的提交,它是一个新的根提交,即没有父级

(这是一个实现细节,你不应该依赖它,但是你可以偷看一下:
cat.git/HEAD
,你会看到它包含
ref:refs/heads/master
,表明你在分支
master
。无论分支
master
是否存在,这都是正确的!读取
HEAD的官方方法
类似的是
git symbolic ref HEAD
git rev parse--symbolic full name HEAD
git rev parse--abbrev ref HEAD
。这三种行为方式都有细微的不同,因此我们可以根据对分离的HEAD case的需求来选择要使用的程序和选项。)


目前,
git branch
只列出了实际存在的分支。这在将来可能仍然是正确的,但谁知道呢?

我只需要一个初始提交:

C:\Users\myusername\Dropbox\myfolder\myproject\build>git commit -m "Initial commit."

C:\Users\myusername\Dropbox\myfolder\myproject\build>git status
On branch master
nothing to commit, working tree clean

C:\Users\myusername\Dropbox\myfolder\myproject\build>git branch
* master

C:\Users\myusername\Dropbox\myfolder\myproject\build>

现在我可以看到分支“master”,一切都正常工作。

我只需要一个初始提交:

C:\Users\myusername\Dropbox\myfolder\myproject\build>git commit -m "Initial commit."

C:\Users\myusername\Dropbox\myfolder\myproject\build>git status
On branch master
nothing to commit, working tree clean

C:\Users\myusername\Dropbox\myfolder\myproject\build>git branch
* master

C:\Users\myusername\Dropbox\myfolder\myproject\build>

现在我可以看到分支“master”,一切正常。

在Dropbox中使用git通常是错误的。我无法显示分支(甚至不能显示master)通过使用空的回购。你有什么吗?为什么?它只是我本地计算机上的一个常规文件夹,但恰好与Dropbox同步。这有什么关系呢?哦……那么你是在保持git回购“同步”用一些dropbox的东西?你在等式中添加了一个biiig X。在dropbox中使用git通常是一个错误。我无法显示分支(甚至不能显示主分支)通过使用空的回购。你有什么吗?为什么?它只是我本地计算机上的一个常规文件夹,但恰好与Dropbox同步。这有什么关系呢?哦……那么你是在让git回购与Dropbox的东西“同步”吗?你在等式中添加了biiig X。如果我只使用“git checkout-b”,它说“错误:开关'b'需要一个值”。所以我使用“git checkout-b master”,因为我想创建一个新分支并给它命名为'master'。那么你的问题是什么?当我使用“git branch”或“git branch-a”时,它应该列出我的分支,我希望看到“master”“因为这是我应该创建的分支,但我没有看到列出任何分支。您可能需要在分支中进行提交。当我尝试“git commit-m‘initial commit’”时,我看到的错误是:“error:pathspec‘commit’与git已知的任何文件都不匹配。”如果我只使用“git checkout-b”,它会说“错误:开关'b'需要一个值”。所以我使用“git checkout-b master”,因为我想创建一个新分支并给它命名为'master'。那么你的问题是什么?当我使用“git branch”或“git branch-a”时,它应该列出我的分支,我希望看到“master”“因为这是我应该创建的分支,但我没有看到列出任何分支。您可能需要在分支中进行提交。当我尝试“git co