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

dev*_*ium 56 git version-control

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

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

git init
Run Code Online (Sandbox Code Playgroud)

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

git branch file1_branch
git branch file2_branch
git branch file3_branch
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

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

为什么是这样?

也许问题可能与此相关,即使主分支在此时未创建?我试过做一个git branch.它什么都没收.

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

git commit -m `initial_commit`
Run Code Online (Sandbox Code Playgroud)

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

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

如何解决这个问题?难道我做错了什么?

谢谢

Bri*_*ell 93

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

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

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

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


Fra*_*mas 14

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

git commit --allow-empty
Run Code Online (Sandbox Code Playgroud)

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

  • @ frank -s-thomas应该是``git commit --allow-empty -m"空提交."``.没有? (4认同)
  • @Darhuuk他可能通过他的$ EDITOR输入了提交消息. (2认同)