在git中创建一个空项目的分支

时间:2011-04-15 15:05:13

标签: git version-control

假设我要在3个不同的文件(fileA,fileB和fileC)中为我的新项目实现3个不同的功能。

我以为我只需要将我的(当前为空)项目添加到git:

git init

然后创建3个不同的分支:

git branch file1_branch
git branch file2_branch
git branch file3_branch

但这不起作用:

  

致命:不是有效的对象名称:'master'。

为什么会这样?

也许问题可能与此时甚至没有创建主分支有关?我试过做git branch。它没有任何收获。

然后我考虑做一个“空”提交来强制git创建master分支:

git commit -m `initial_commit`

但由于我没有将任何文件添加到暂存区域,因此无效。

请记住,我即将开始我的项目,所以此时我没有任何文件可以添加到提交中!

如何解决这个问题?我做错了吗?

由于

4 个答案:

答案 0 :(得分:89)

Git将分支表示为该分支中最新提交的指针。如果您尚未创建提交,则该分支无需指向。所以在你至少有一次提交之前,你无法真正创建分支。

Git表示提交作为对一个或多个父提交的引用(如果这是初始提交,则为全零父级),提交消息和一些其他元数据以及树引用。树基本上是每个目录中每个文件中的内容的清单。如果您的目录为空,则无法在树中放置任何内容。现在,实际上可以创建一个空提交作为第一次提交;你可以运行git commit --allow-empty -m "initial commit"。但这并不是使用Git的常用方式。

在Git中,除非你需要,否则你不应该使用分支。在有一些要分支的内容之前,不需要创建多个分支。如果你在开发的最初阶段创建了三个分支,那么它们之间是否会有共同的祖先?在那种情况下,为什么不创建三个回购?或者你是否会同步更新它们中的所有三个,直到它们开始分歧?这似乎是为了让所有这些都保持最新的额外工作;你应该等到创造它们,直到它们需要发散。

但是如果要使用此工作流,可以运行git commit --allow-empty -m "initial commit"来创建一个空的初始提交。

答案 1 :(得分:13)

您可以使用以下命令执行空初始提交:

git commit --allow-empty

然后你可以随意创建你的分支。

答案 2 :(得分:0)

我总是通过提交一个空文件来初始化分支:

touch a

git add a

git commit -m'init'

然后它会自动创建分支“ master”。 之后,您可以删除文件“ a”。

答案 3 :(得分:0)

  1. 首先使用 git clone
  2. 在本地克隆您的存储库
  3. 进入该目录并在其中创建一个空文本文件。
  4. 使用 git 命令提交 (git commit -m "test file") & push (git push) 文件。
  5. 主分支会自动创建。