在git的空项目上创build分支
假设我即将在3个不同的文件(fileA,fileB和fileC)中实现3个不同的function,用于我的一个新项目。
我想我只需要添加我的(当前为空)项目git:
git init
然后创build3个不同的分支:
git branch file1_branch git branch file2_branch git branch file3_branch
但是这不起作用:
致命的:不是有效的对象名称:“主”。
为什么是这样?
也许问题可能是相关的,即使主分支是不是在这个时候创build? 我试着做一个git branch
。 它一无所获。
然后我想了一下做一个“空”的承诺来强制git创buildmaster
分支:
git commit -m `initial_commit`
但是因为我没有将任何文件添加到暂存区,所以不起作用。
请记住,我即将开始我的项目,所以在这一点上,我没有任何文件添加到提交!
如何解决这个问题? 难道我做错了什么?
谢谢
Git将分支表示为指向该分支中最新提交的指针。 如果还没有创build提交,那么该分支没有任何指向。 所以你不能真正创build分支,直到你至less有一个提交。
Git代表提交作为一个或多个父提交的提交(或者如果这是初始提交,则为全零父提交),提交消息和一些其他元数据以及树引用。 树基本上是每个目录中每个文件中的内容的清单。 如果你的目录是空的,那么树中就没有东西了。 现在,实际上可以创build一个空的提交作为你的第一次提交; 你可以运行git commit --allow-empty -m "initial commit"
。 但是这不是使用Git的常见方式。
在Git中,除非您需要,否则不要使用分支。 除非您有一些内容需要分支,否则不需要创build多个分支。 如果你在发展的一开始就创造了三个分支,你们之间没有共同的祖先吗? 在这种情况下,为什么不build立三个回购协议? 或者你是否将同步更新所有三个,直到他们开始分歧? 这似乎是很多额外的工作,以保持所有的更新; 你应该等待创造他们,直到他们需要分歧。
但是如果你想使用这个工作stream,你可以运行git commit --allow-empty -m "initial commit"
来创build一个空的初始提交。
你可以做一个空的初始提交:
git commit --allow-empty
然后,你可以创build你喜欢的分支。