我几个月没有使用Git了。 我刚开始一个新项目,一件事情困扰着我:每当我创建一个新分支时,已经存在的分支就会消失,就好像它被替换了一样。 我的意思是,当我执行“ git branch”时,我什么都没有! 显然,我的“ git checkout”不起作用。 我什至没有分支了。只有当前的一个。
我已经在工作的项目没有这个问题。
那是为什么?
答案 0 :(得分:0)
这很正常:您刚刚创建了一个新项目:
$ mkdir newproj
$ cd newproj
$ git init
Initialized empty Git repository in .../newproj
此时,不存在分支。不过,正如git status
会告诉您的那样,您位于master
分支上:
$ git branch
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
$
您可以使用git checkout -b
切换到另一个分支:
$ git checkout -b xyz
Switched to a new branch 'xyz'
现在您仍然没有分支,但是现在您在分支xyz
上,正如git status
会告诉您的那样。
这种奇怪的状态是正常的,因为没有提交。如果没有提交,则不会有分支,因为分支 name 仅包含一些现有提交的哈希ID。没有提交,分支名称将不存在。
当创建一个 new 提交时,Git会执行以下步骤(前几步没有特定顺序;只有后几步具有实际顺序):
git add
将文件从工作树复制到索引中)。因此,直到您至少进行一次提交,您才能拥有任何分支名称。但是,即使该分支不存在,您仍然可以选择哪个分支名称是您的 current 分支:创建该分支名称的是第一次提交。
((一旦您完成 次提交,您可以在一个提交中附加任意数量的名称。如果您进行多次提交,则可以附加尽可能多的名称)我喜欢每个提交,尽管大多数提交不需要附加任何任何名称。Git通过从后来的提交中向后进行查找来找到它们,只有 last < / em> commit-分支的 tip -都需要一个名称,以便Git可以找到它,而无需先找到以后的提交。)