Git: Внутренняя ошибка: refs/remotes/origin/master не действительная упакованная ссылка

Я пытаюсь клонировать репозиторий git на сетевом диске Windows, но процесс завершается с ошибкой. Сначала он выбрасывает internal error: refs/remotes/origin/master is not a valid packed reference, а затем повторно ссылается на то, что он не смог отменить индексный файл.

x:\code\source> git clone x:\code\repos\project.git
Cloning into 'project'...
done.
error: internal error: refs/remotes/origin/master is not a valid packed reference!
fatal: update_ref failed for ref 'HEAD': cannot update the ref 'HEAD': 
  Trying to write ref refs/heads/master with nonexistent object d34950c3faee46d8a7f3b8e7950b04fcc5da9d1c
Unlink of file 'project/.git/objects/pack/pack-....idx' failed. Should I try again? (y/n)

Я могу клонировать без проблем на локальный диск с чистого репо на сетевом диске, но не могу клонировать сетевой диск.

Ответ 1

При клонировании к подключенному сетевому диску с использованием стандартной командной строки Windows вам необходимо указать путь от file://.

например.

git clone file://x:\code\repos\project.git

или, если существуют пробелы,

git clone "file://x:\my code\repos\project.git"

Вы не можете, однако, сделать то же самое при указании цели.

** DOESN'T WORK **
git clone file://x:\code\repos\project.git file://y:\code\source\project

Вместо

cd y:\code\source
git clone file://x:\code\repos\project.git project

Ответ 2

Для будущих читателей, которые пытаются использовать GitExtensions и получают эту ошибку: ответ David C также подходит для наших целей, и вы можете ввести file:// перед названием местоположения "Repo to clone".

Эта ошибка возникает, когда Repo to clone и каталог назначения находятся на локальном сетевом диске.

enter image description here

Ответ 3

Ответ дэвида С не сработал, когда я попробовал его с помощью ловушки post-receive, поэтому разместил код, который сработал для меня, в надежде, что он поможет кому-то еще.

#!/bin/sh
cd "X:/destination/folder"
git clone "file://Y:/original/repo"

где X:/destination/folder - это место, куда вы хотите клонировать Y:/original/repo.

Мне не нужно было ставить .git или project в конце

Примечание: это код