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
в конце
Примечание: это код