If you were doing some other operation with git
, or some git-related operation in a GUI, cancel the operation or close the error, and manually run a git gc
, then try your operation again. Basically, on Windows, this message is an indication of contention between the git command line client and some other program.
In my case, the repack had been triggered automatically as part of a git pull
. When I got the error, after ruling out a permission issue with a quick sanity check that none of the things that would be launching git processes (IDE, git bash, git GUI) would be running elevated, I went to Process Explorer to find out what process had the file open (Find -> File Handle or DLL), and it found a git.exe
that was a parent of the other git.exe
process. I’m guessing that there are some locking assumptions in the automatic repack code that aren’t appropriate on Windows, where, by default, opening a file puts an exclusive read/write lock on the file at the OS level.
That was with
$ git --version
git version 1.9.2.msysgit.0
I got the same issue using eclipse . The was accessing git repository through Eclipse as well as git bash.
Solved by running the gc after closing eclipse
Environment
Windows 7
Git 1.8.4.mysysgit.0
Eclipse Kepler SR2
As it turned out, Visual Studio had a lock on some of Git’s files. Closing Visual Studio resolved the issue.
FTR, I’m using the Git source control provider (in the last usable version 0.6.4) in VS2010. Maybe this is part of the cause.
In my case git gc
would fail to run repack after enumerating but it was successful when running with some additional options, git gc --aggressive --prune=now
.
Сегодня я случайно наткнулся на это, пытаясь запустить Git сборщик мусора:
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Как мне с этим справиться?
10 ответов
Я не понимаю последствий этого, но, как предложено в этом поток , когда я столкнулся с этим, я просто сделал
$ mv .git/refs/remotes/origin/HEAD /tmp
(держите его на всякий случай), а затем
$ git gc
Работал без нареканий; Я не столкнулся с какими-либо проблемами.
265
Manos Nikolaidis
3 Май 2018 в 13:13
Увидев ответ Трентона, я посмотрел на свой .git/refs/remotes/origin/HEAD
и увидел, что он также указывает на старую ветку, которая теперь удалена.
Но вместо того, чтобы самому редактировать файл, я попробовал решение Райана:
git remote set-head origin --auto
Он автоматически установил файл в новую ветку, и после этого git gc
работал нормально.
123
WilQu
20 Апр 2018 в 17:44
Проблема, с которой я столкнулся (это та же проблема, о которой @Stavarengo упоминал в этот комментарий выше) заключается в том, что удаленная ветвь по умолчанию (develop
в моем случае) была удалена, но все еще упоминалась в .git/refs/remotes/origin/HEAD
.
Открытие .git/refs/remotes/origin/HEAD
в моем редакторе показало следующее:
ref: refs/remotes/origin/develop
Я тщательно отредактировал его, чтобы он указывал на мою новую ветку по умолчанию, и все было хорошо:
ref: refs/remotes/origin/master
Подсказка, которая подсказала мне, заключалась в том, что запуск git prune
показал эту ошибку:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
107
Trenton
11 Сен 2017 в 19:08
Слава богу, я нашел это https://makandracards.com/chris-4/54101-fixing-a -git-репо
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Это может произойти, если восходящие ветки были удалены, и ваш источник указывает на них. Вы можете подтвердить это, запустив:
cat .git/refs/remotes/origin/HEAD
Если он указывает на несуществующую ветку, выполняется:
git remote set-head origin --auto
С последующим
git gc
Исправлю это
48
Thawinwats Uggaravisee
19 Апр 2021 в 16:15
Похоже, ваши символические ссылки могут быть сломаны… Попробуйте заменить его на ветку по умолчанию следующим образом: Например, моей веткой по умолчанию является master.
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Это должно исправить.
27
Conal Da Costa
17 Мар 2020 в 00:57
git update-ref -d [wrong reference here]
Это решит эту проблему.
Для вышеуказанной проблемы используйте следующий код:
git update-ref -d 'refs/remotes/origin/HEAD'
Если вы получаете ошибку с .git, как показано ниже:
error: bad ref for .git/logs/refs/remotes/origin/Dec/session-dynatrace-logs 6
Вы можете скопировать путь, начинающийся с refs, как показано ниже:
git update-ref -d 'refs/remotes/origin/Dec/session-dynatrace-logs 6'
4
Joshua Cleetus
18 Дек 2020 в 17:12
Причиной этого для меня была работа в сжатой папке в Windows. Когда папка была распакована, она повредила файлы пакета, что привело к другим странным проблемам, таким как невозможность удалить несуществующие ветки.
Единственное исправление состояло в том, чтобы стереть рабочий каталог и снова клонировать удаленные репозитории. К счастью, я все еще мог отправлять и получать обновления, чтобы ничего не было потеряно. Теперь все хорошо.
1
Will Strohl
3 Июн 2020 в 04:46
Моя проблема возникла с определенной веткой.
Видимо, справочный файл для ветки был поврежден. Я исправил так.
git касса главная
// Я удалил файл .gitrefsheadsbranch_xpto
git тянуть
git checkout branch_xpto
1
Rafael Pizao
9 Фев 2021 в 19:25
Я столкнулся с этой ошибкой, потому что ветвь по умолчанию была изменена с master
на main
. Я использовал смесь информации, предоставленной несколькими ответами выше, чтобы решить эту проблему:
cat .git/refs/remotes/origin/HEAD
Возвращается :
ref: refs/remotes/origin/master
Чтобы исправить это, я запустил:
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
Я запустил это снова, чтобы перепроверить:
cat .git/refs/remotes/origin/HEAD
Который вернулся:
ref: refs/remotes/origin/main
Затем git gc
и git prune
работали нормально.
Чтобы увидеть, что происходит, я также пробовал:
git remote set-head origin --auto
Который вернулся:
origin/HEAD set to main
И это действительно решает проблему, автоматически идентифицируя реф.
1
Virtua Creative
10 Ноя 2021 в 15:26
Если вы используете рабочие деревья git, убедитесь, что вы делаете
git worktree prune
Перед запуском
git gc
У меня было повреждено рабочее дерево, и это, похоже, помогло после удаления поврежденного рабочего дерева. git prune
сам по себе не работает.
0
JeffP
17 Дек 2019 в 20:46
I. Описание проблемы
Во второй половине дня коллега сообщил, что на Gitlab не может быть создан новый репозиторий.
The form contains the following error:
Failed to create repository via gitlab-shell
Позвольте мне посмотреть, если что-то не так с сервером GitLab?
Во-вторых, устранение неполадок
Угадай 1. Достаточно ли у этого коллеги полномочий
В этом случае я сначала использовал администратора root, чтобы помочь ему создать новый проект в ios Group, но об этой же ошибке сообщалось, поэтому причина не была
Угадай 2. Что не так с сервером? Приходится смотреть на логи
2.2.1 Просмотр журналов
Ссылка:http://xxxx.xxx.xxxx.xxxx/admin/logs (xxxx.xxx.xxxx.xxxx — это адрес gitlab)
Просмотр [Область администратора] -> [Мониторинг] -> [Журналы] -> [githost.log]
Как администратор root, я проверил текущие журналы сервера GitLab, как показано ниже:
October 20, 2018 09:44 -> INFO -> 'git -c repack.writeBitmaps=false repack -d' in /data/gitlabData/repositories/Android/WatchApp/Self/RedPacketOfIntegral.git
October 20, 2018 11:01 -> INFO -> 'git -c repack.writeBitmaps=false repack -d' in /data/gitlabData/repositories/Android/WatchApp/Z1/Launcher.git
October 20, 2018 11:04 -> INFO -> 'git -c repack.writeBitmaps=true repack -A -d --pack-kept-objects' in /data/gitlabData/repositories/iOS/EKOSDKSpecs.git
October 20, 2018 11:53 -> INFO -> 'git -c repack.writeBitmaps=false repack -d' in /data/gitlabData/repositories/iOS/EKOSDKSpecs.git
October 20, 2018 12:07 -> INFO -> 'git -c repack.writeBitmaps=false repack -d' in /data/gitlabData/repositories/Android/WatchApp/Self/Launcher.git
October 20, 2018 15:25 -> INFO -> 'git -c repack.writeBitmaps=true repack -A -d --pack-kept-objects' in /data/gitlabData/repositories/Android/PhoneApp/XTCWatch.git
October 20, 2018 15:25 -> ERROR -> 'git -c repack.writeBitmaps=true repack -A -d --pack-kept-objects' in /data/gitlabData/repositories/Android/PhoneApp/XTCWatch.git failed:
fatal: sha1 file 'objects/pack/tmp_pack_3VdpAL' write error: No space left on device
October 20, 2018 15:38 -> INFO -> 'git -c repack.writeBitmaps=true gc' in /data/gitlabData/repositories/iOS/CallWatch.git
October 20, 2018 15:39 -> ERROR -> 'git -c repack.writeBitmaps=true gc' in /data/gitlabData/repositories/iOS/CallWatch.git failed:
fatal: sha1 file 'objects/pack/tmp_pack_TUKcET' write error: No space left on device
error: failed to run repack
Из журналов выше видно, что дискового пространства на сервере, на котором работает GitLab, недостаточно.
2.2.2 Просмотр журналов Войдите на сервер, на котором работает Gitlab, через XShell, чтобы проверить состояние диска.
Я проверил диски и, действительно, каталог / data и дисков больше нет.
Затем перейдите к списку ненужных файлов. После очистки ненужных файлов остается доступным 569G.
В это время проверьте дисковое пространство на Gitlab и проверьте [Область администратора] -> [Мониторинг] -> [Информация Sysetm]
В-третьих, пересоберите проект
В настоящее время восстановление проекта возвращается к нормальной жизни.
Под соответствующим созданным журналом установите флажок [Admin Area] -> [Monitoring] -> [Logs] -> [application.log].
Автор: Оуян Пэн добро пожаловать на перепечатку, делиться с другими, является источником прогресса!
Перепечатано, пожалуйста, сохраните оригинальный адрес:https://blog.csdn.net/qq446282412/article/details/83215306
Если вы найдете эту статью полезной, вы можете отсканировать QR-код Alipay и WeChat Pay, как показано на рисунке ниже, чтобы получить бесплатное вознаграждение за эту статью. Ваша поддержка побудит меня продолжать создавать