致命:无效的对象名称:“ master”


182

我有运行git 1.7的专用服务器

git init 

不会创建主分支的文件夹。原因当我这样做:

git branch 

它没有列出任何东西。当我做:

git --bare init

它创建文件。当我打字

git branch master 

它说:

fatal: Not a valid object name: 'master'.

试图生成一个新的分支时,相同的结果:git branch newbranch
索伦

Answers:


279

当我git init创建文件夹时,它不会创建主分支

这是正确的,也是预期的行为。master除非您提交某些内容,否则Git不会创建分支。

当我做git --bare init它创建文件。

非裸露对象git init还将.git在项目根目录的隐藏目录中创建相同的文件。

当我键入时,git branch master它说“致命:无效的对象名称:'master'”

这再次是正确的行为。在提交之前,没有master分支。

您尚未提出问题,但我会回答我认为您要提出的问题。将一个或多个文件添加到您的目录,然后git add准备提交。然后git commit创建您的初始提交和master分支。


3
那么,如果我根本不想使用一个称为“ master”的分支指针怎么办?如果我希望将其称为“主要”怎么办?没有办法以第一个分支指针的其他名称开头吗?没有“ git init”参数吗?我可以更改.git / HEAD中列出的名称吗?还有其他一些我需要更改的文件吗?
Jemenake

1
@Jemenake然后初始化您的存储库,进行提交,然后重命名分支。如果您确实要避免创建“ master”分支,请编辑.git/HEAD,然后将其更改refs/heads/masterrefs/heads/main,但是根本没有理由这样做。只需在第一次提交后重命名分支即可。
meagar

13
您可以git checkout -b <branchname>用来更改HEAD-无需编辑文件。
Superfly Jon

1
最后一部分是黄金,TFS GIT带有完全未初始化的git repo。因此,在使用SourceTree进行第一次克隆之后,没有任何效果,直到“然后git commit创建您的初始提交和master分支”之前,它都无法解决。如果没有最初的提交/推送,真的没有办法拥有master-local / remote吗?
Pawel Cioch 2015年

最后的解释可以帮助我理解,如果没有提交,则分支不存在。
Mayur Patil

23

完成第一次提交后,Git将创建一个master分支。如果存储库中没有代码,则没有分支。


1
但是您需要一个新分支才能推送到master。
索伦

1
这是一个关于“ Git在完成第一次提交后创建一个master分支”的问题。那么,为什么在所有这些之前,“ git status”显示为“ On Branch Master”?
Tick20

16

首先,当您创建“裸仓库”时,您将不会对其进行任何操作(它不包含工作副本,因此该git branch命令没有用)。

现在,master即使进行了a git init操作,您也没有分支的原因是没有提交:创建第一个提交时,您将拥有一个master分支。


1
好的,那很清楚。但是,当我提交时,它说:致命:空洞的身份
Roy van Zanten'2

我将其固定为。但是,当我想从另一台计算机上提取/获取此仓库时。我应该在那里做git init吗?
罗伊·范·赞丹

@RoyvanZanten您可以git clone用来省去git init在接收方执行操作的麻烦。
Borealid 2012年

我设法使一切正常。没有错误。但是,当我尝试推送时说:将对象<bla> bla>总计<3/3>写入服务器59fa0tweirdcod04 master> master但是当我检查服务器上的文件时,什么都没有。
罗伊·范·赞丹

@RoyvanZanten您在查看服务器存储库还是服务器工作副本git checkout如果要让WC反映.git目录中的内容(即您推送的位置),则需要执行a 。
Borealid '02

12

创建新分支之前,您至少需要在master上提交一次。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.