Git致命:引用的格式无效:'refs / heads / master


101

我正在使用Dropbox同步git存储库,但是现在尝试并push出现错误时:

fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'

因此,似乎Dropbox检测到冲突并创建了一个副本。好的,没问题,所以我删除了冲突的文件。尽管如此,虽然得到上述git错误。

$ git checkout master
    M   index.html
    Already on 'master'
$ git add .
$ git commit -a -m "Cleanup repo"
    [master ff6f817] Cleanup repo
    1 file changed, 5 insertions(+), 5 deletions(-)
$ git push
    fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
    The remote end hung up unexpectedly`

我怎样才能解决这个问题?谢谢。

Answers:


178

如果您不确定此存储库,请备份该存储库,因为这些命令是不可逆的。

首先,进入您的repo目录。

cd myrepo

然后递归搜索冲突的文件并将其删除

find . -type f -name "* conflicted copy*" -exec rm -f {} \;

最后,从git的packed-refs文件中删除所有“冲突”引用

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs

1
我有同样的问题,这为我解决了。谢谢!
erik

这也为我解决了。谢谢!
cecconeurale '16

1
对于macos用户find . -type f -name "* conflicted copy*" -delete
Soyoes '16

42

冲突的文件可能在多个地方,我将进行调查:

.git/logs/refs/remotes/origin/
.git/logs/refs/heads/
.git/refs/remotes/origin/
.git/refs/heads/

或者,您可能会在.git子目录中随处可见:find . -name '*conflicted*'

或者,否则,使用列出所有活动分支,git branch -a并删除(git branch -d)任何可疑的事物。


内到处都有冲突的文件.git。我仔细检查并删除了所有内容,并对其进行了修复。谢谢。
贾斯汀

2
@Justin Glad我可以帮忙。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
Marco Leogrande,2012年

2
在Mac OS X上,使用:(find . -name '*conflicted*'编辑:格式)
xgMz 2013年

1
@xgMz谢谢,我将更新我的答案,因为您的解决方案具有一般有效性。
Marco Leogrande

1
通过简单的操作,find我掌握了一个有冲突的文件,并用两个文件手动解决了该问题mv。缓慢地进行此操作并逐步进行推理是最安全的方法。
pid 2014年

8

当我的同事推动他的更改并在Dropbox更新之前关闭PC时,我们的团队也会遇到这种情况。

我这么简单地解决了。

刚刚删除了冲突的副本。(XXXX的副本有冲突yyyy-mm-dd)

并正常拉。

请注意,我的同事在进行修改之前已经进行了更改。然后他再次推动他的更改。这次没有关机。:)


1
对我来说绝对完美:) thx-对我来说,dropbox创建了一些奇怪的字符串文件名,该文件名与“ update”不兼容
cV2 2014年

1
这对我有用!/ refs / heads文件夹中的名称中包含一个带有“冲突副本”的文件,并将其删除,然后拉/推,一切都很好。谢谢!
DiscDev 2014年

7

我能够从.git文件夹中删除所有有冲突的文件,但是我继续遇到有关不再存在的文件的错误。

对我来说,解决方法是打开.git/refs/packed_refs并删除包含文本“ conflicted”的行。


1

对我来说,这是错误的: fatal: Reference has invalid format: 'refs/tags/r0.2:3'

您可以转到/.git/packed_refs文件,然后删除refs/tags/r0.2:3

然后它开始工作。但是为什么它首先发生我不知道。


0

尝试git checkout master先进入健康,知名的分支机构。


在原始帖子中更新了输出。
贾斯汀2012年

嗯,您可以尝试full git push origin master,也可以粘贴git branch -a请的输出吗?

同样的错误在这里...尝试git branch -a导致此错误!
trusktr 2014年

问题出在远程存储库上,因此拉出或检出并不能解决问题。上面的其他答案是指直接修复遥控器上的文件并使其正常工作。您的建议非常好,但这不能解决问题。
pid 2014年

0

我遇到了同样的错误

致命:引用的格式无效:“ refs / heads / somebranch(1)”

对于以下命令

git branch

然后,我使用以下命令搜索了错误的名称(分支名称后跟(1))

find . -name 'somebranch (1)'

结果如下

./.git/refs/heads/somebranch(1)

这是somebranch IMO的某些重复版本。因此,我通过执行find命令并随后执行delete删除了它

find . -name 'somebranch (1)' -print -exec rm -rf {} \;

然后,branch命令成功运行

git branch

0

我遇到了类似的错误,例如

fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)'

只需删除.git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)远程Dropbox存储库中的文件即可解决问题。

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.