2012-10-07 141 views
99

我使用Dropbox同步一个git库,但现在当我尝试和push,我得到一个错误:Git的致命:参考格式无效:“裁判/头/主

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` 

我该如何解决这个问题?谢谢。

回答

0

尝试git checkout master第一次登上健康,有名的分支。

+0

在原始文章中更新了输出。 – Justin

+0

嗯,你可以试试一个完整的'git push origin master',并且粘贴'git branch -a'的输出吗? – poke

+0

同样的错误在这里...尝试'git branch -a'导致这个错误! – trusktr

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)任何可疑的东西。

+0

'.git'里的任何地方都有冲突的文件。我彻底删除了它们,并修复了它们。谢谢。 – Justin

+2

@Justin很高兴我能帮到你。如果此答案或任何其他人解决了您的问题,请将其标记为已接受。 –

+2

在Mac OS X上使用:'find。名称'*冲突*''(编辑:格式) – xgMz

7

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

修复程序对我开放.git/refs/packed_refs并删除包含文本“冲突”的行。

177

如果您不确定这个问题,请备份您的回购库,因为这些命令是不可逆的。

首先,转到您的仓库目录。

cd myrepo 

然后递归搜索有冲突的文件,并删除它们

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

最后,请从Git的填充裁判文件

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

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

+0

这也给我修好了。谢谢! – cecconeurale

+0

为macos用户找到。 -type f -name“*冲突副本*”-delete“ – Soyoes

8

这也发生在任何“冲突”引用我们当我的同事在Dropbox更新之前推送他的更改并关闭PC时,这个团队就是一个团队。

我很简单地解决它。

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

并正常拉动它。

请注意,我的同事之前做过的更改搞砸了。他再次推动他的改变。这一次没有关机。:)

+1

绝对适合我:) thx - 对我来说dropbox创建了一些奇怪的字符串文件名,它与”更新“不兼容 – cV2

+1

这对我有效!在/ refs/heads文件夹中有一个名为“冲突副本”的文件,并删除该文件,然后拉/推,一切正常。谢谢! – DiscDev

0

我得到相同的错误

fatal: Reference has invalid format: 'refs/heads/somebranch (1)'

以下命令

git branch 

然后,我搜索错误名称(分支名,接着(1))使用命令

find . -name 'somebranch (1)' 

它显示以下结果

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

这是一些somebranch的复制版本 IMO。所以,我删除了此通过执行以下由find命令删除

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

然后在该分支指令成功运行

git branch 
0

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

你可以去/.git/packed_refs文件并删除该行refs/tags/r0.2:3

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

0

我encounterd了类似的错误,如

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

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

相关问题