web-dev-qa-db-ja.com

致命的なGit:参照の形式が無効です: 'refs / heads / master

Dropboxリポジトリを同期するためにgitを使用していますが、今Pushを試してみるとエラーが発生しています:

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

そのため、Dropboxは競合を検出し、コピーを作成したようです。 OK、問題ないので、競合するファイルを削除しました。それでも、上記の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`

どうすれば修正できますか?ありがとう。

101
Justin

これらのコマンドは元に戻せないため、これについて不明な場合はリポジトリのバックアップを作成してください。

まず、リポジトリディレクトリに移動します。

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
178
Lane

競合するファイルは複数の場所にある可能性があります。

.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)します。

42
Marco Leogrande

これは、同僚がDropboxを更新する前に変更をプッシュしてPCをシャットダウンしたときにも発生します。

とても簡単に解決しました。

競合するコピーを削除しました。 (XXXXの競合したコピーyyyy-mm-dd)

そして普通に引っ張ります。

私の同僚が混乱する前に変更があったことに注意してください。そして、彼は再び変更をプッシュします。今回はシャットダウンなし。 :)

8
Hareen Laks

競合するすべてのファイルを.gitフォルダーから削除できましたが、存在しないファイルに関するエラーが引き続き発生しました。

私のための修正は、.git/refs/packed_refsおよびテキスト「conflicted」を含む行の削除。

7
Drew

私にとっては、エラーが発生していました:fatal: Reference has invalid format: 'refs/tags/r0.2:3'

/。git/packed_refsファイルに移動して、refs/tags/r0.2:3の行を削除できます。

その後、動作し始めました。しかし、なぜそれが最初に起こったのかはわかりません。

1
Rajesh Paul

同じエラーが発生していました

致命的:参照の形式が無効です: 'refs/heads/somebranch(1)'

次のコマンド用

git branch

次に、コマンドを使用して誤った名前(ブランチ名の後に(1)が続く)を検索しました

find . -name 'somebranch (1)'

そして、それは次の結果を示しました

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

somebranch IMOの複製バージョンです。そこで、deleteを実行してからfindコマンドを実行して、これを削除しました

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

その後、ブランチコマンドが正常に実行されます

git branch
0
zeeawan

git checkout master最初に健全な名前の付いたブランチにアクセスします。

0
poke

次のような同様のエラーが発生しました

_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)を削除するだけで問題は解決しました。

0
Sithu