删除 Git 中的损坏名称(保管箱冲突副本)

Posted

技术标签:

【中文标题】删除 Git 中的损坏名称(保管箱冲突副本)【英文标题】:removing broken names in Git (dropbox conflicted copy) 【发布时间】:2015-05-07 18:48:16 【问题描述】:

我将我的 repo 保存在 Dropbox 中,有一天(请参阅下面的日期)它变得疯狂。现在我每次尝试自动完成分支名称时都会收到这些警告

warning: ignoring ref with broken name refs/heads/develop (MacBook Pro's conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/heads/master (MacBook Pro's conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/remotes/origin/develop (MacBook Pro's conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/remotes/origin/master (MacBook Pro's conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/remotes/production/master (MacBook Pro's conflicted copy 2015-02-28)

如何解决这些警告?

注意:对于所有重复触发快乐的人 - 这不是重复!我只想删除上面的引用以停止收到警告。 git repo 完好无损

【问题讨论】:

Git repository broken after computer died的可能重复 这不是重复的!我没有那个问题的问题。 git repo 完好无损。我只想删除那些引用 作为一般评论:这样的事情说明了为什么 Dropbox 不是托管 Git 存储库的完美解决方案。看看像 BitBucket 这样的东西,它提供了免费的私有 Git 存储库。这可能更合适,并且可以避免上述问题。 @nwinkler 我会担心 Dropbox 损坏我的 git 存储库。 (这甚至是一个小的损坏,但幸运的是,假设您没有丢失分支或其他东西上的最新本地提交,它可以从中恢复。)不要使用像 Dropbox 这样的东西来管理已经在源代码控制下的东西. @NickGinanto 我做同样的事情,效果很好。只是时不时地我必须删除所有这些冲突。不过,这种情况并不经常发生,并且能够在工作中停止编码并从我在家用 PC 上停下来的地方重新开始的好处是巨大的。不要让任何人告诉你其他情况。 【参考方案1】:

当 Dropbox 发现有冲突的文件时,它会将这些文件重命名为 filename (conflicted copy)(您可能知道)。所以你只需要再次重命名这些文件:

这可能是一个相当微妙的练习,因为你会在你的 git 目录中搞砸;最好先复制整个存储库。现在进入这个目录

cd <repo>/.git/refs/heads

您会在哪里找到那些重命名错误的文件。您必须检查要保留的副本(正常副本或冲突副本),并删除不需要的副本,并根据需要重命名冲突副本。您必须在另一个目录中执行相同的操作:

<repo>/.git/refs/remotes

编辑:您将找到的每个文件都只包含它们所指向的提交的哈希值。因此,如果您想检查要保留哪一个;检查哪些提交确实存在,以及您希望这些引用指向的位置。

【讨论】:

没有意识到这些文件是由 Google Drive/文件同步软件添加的。删除名称中带有 [Conflict] 的文件后,我很高兴。 我可以吻你。谢谢。 如何检查哪些提交确实存在? 如果您的 gitignore 中没有任何您关心的内容,并且 repo 存储在其他地方(例如 GitHub),那么最后一次推送可能更容易,然后完全删除项目文件夹并重新克隆。【参考方案2】:

我可能在更新了我的 git 版本(ubuntu 15.04 到 15.10)后收到了这个警告,并且只需要删除 .git/refs/remotes 中的目录以用于我实际上不再配置的旧悬挂遥控器。

【讨论】:

【参考方案3】:

我通过运行修剪了不再在我的遥控器上的分支

git remote prune origin

这为我解决了这个问题。

【讨论】:

以上是关于删除 Git 中的损坏名称(保管箱冲突副本)的主要内容,如果未能解决你的问题,请参考以下文章

Exchange Server 2016管理系列课件53.DAG管理之设置滞后数据库副本

git 中的分支损坏,致命:您当前的分支似乎已损坏

方法中的“使用”语句会导致数据损坏或访问冲突的麻烦吗?

尝试读取或写入受保护的内存。这通常表明 c# 中的其他内存已损坏(访问冲突)

由于解析错误,项目“project”已损坏,无法打开。检查项目文件中的无效编辑...控制冲突

git add导致损坏的索引错误