読了: 約 2 分

Dropboxでフォルダの更新を管理してherokuにあげるという開発スタンスを個人のプロジェクトでやっているのですが、
その中でReference has invalid format: 'refs/〜'という問題が起きて少しググっても同じようなのが少ないのでメモ

Dropboxでバージョン管理をしていると起きる問題

海外のサイトとかを見ているとDropboxでバージョン管理をしている人に起きている特有な問題らしい。
大体findでコンフリクトを解決している人が多そうだったが、findで問題が見つからないので下記のようなフローで解決しました。

git pushgit commit ではReference has invalid format: 'refs/〜'というエラーが起きてしまいます。

git fsckでフォルダ等の正当性のチェックをして

Checking object directories: 100% (256/256), done.

となってもその後に上のエラーがもう一度表示されます。

不要オブジェクトを削除して最適化するコマンドでもエラーが起きる

$ git gc
fatal: Reference has invalid format: 'refs/stash (PC-5016 の競合コピー 2013-12-20)'
error: failed to run pack-refs

色々なサイトを見ているとDropbox内にフォルダ内でconflictが起きているという事なのでfindしてみるが特に何も表示されず。

find . | grep 'conflicted'

最終的な解決策としては至って普通で、
rm -rfで削除しようとするとsyntax errorで削除出来ないので、macのフォルダに.gitなど.がついたファイルを表示して
物理的に削除しました。

色々ありましたがこれが最短の解決方法だと思います。ただコンフリクトをそのまま削除しているので作業している物が消える可能性があります。
今回はすぐに直せるようなものだったので、削除しましたが。

defaults write com.apple.finder AppleShowAllFiles -boolean true

// finder再起動
killall Finder

これでひとまず解決しました。