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`

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

4

8 回答 8

178

如果您不确定这个,请备份您的 repo,因为这些命令是不可逆的。

首先,转到您的 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
于 2013-05-06T17:24:51.640 回答
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) 任何可疑内容。

于 2012-10-07T23:03:42.903 回答
8

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

我就这么简单地解决了。

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

并正常拉动。

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

于 2014-01-29T07:36:06.233 回答
7

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

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

于 2012-11-01T22:33:10.500 回答
1

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

您可以转到/.git/packed_refs文件并删除该行refs/tags/r0.2:3

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

于 2015-11-30T10:46:46.240 回答
0

我遇到了同样的错误

致命:参考的格式无效:'refs/heads/somebranch (1)'

对于以下命令

git branch

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

find . -name 'somebranch (1)'

它显示了以下结果

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

这是somebranch IMO 的一些重复版本。所以,我通过执行删除后的查找命令来删除它

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

然后分支命令运行成功

git branch
于 2015-03-16T17:18:19.037 回答
0

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

于 2012-10-07T22:50:49.410 回答
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 存储库中的文件即可解决问题。

于 2016-01-08T05:21:56.287 回答