Мой компьютер отключился, и теперь один из моих репозиториев git сломан. Когда я пытаюсь проверить мастер, он говорит мне:
warning: ignoring broken ref refs/heads/master.
error: Your local changes to the following files would be overwritten by checkout:
com.vainolo.jdraw2d.releng.p2/pom.xml
Please, commit your changes or stash them before you can switch branches.
Aborting
Когда я выполняю, git stash
я получаю:
fatal: bad revision 'HEAD'
fatal: bad revision 'HEAD'
fatal: Needed a single revision
You do not have the initial commit yet
Так что я могу сделать?
Обновить
вывод git reflog
:
fatal: bad default revision 'HEAD'
Не очень перспективно ... Результат git fsck
:
error: Invalid HEAD
Checking object directories: 100% (256/256), done.
error: unable to unpack 59551f96b4e87a1c14293c19eb548ce6fa1f196f header
error: inflateEnd: stream consistency error (no message)
fatal: loose object 59551f96b4e87a1c14293c19eb548ce6fa1f196f (stored in .git/objects/59/551f96b4e87a1c14293c19eb548ce6fa1f196f) is corrupt
.git/refs/heads/master
существует ли и является ли его содержимое действительным хешем фиксации вашего репозитория (вы можете проверить это, например, используяgit show <hash>
)?.git/refs/heads/master/
- куча^@
git reflog
вам сказать? Вы пробовали бегатьgit fsck
?Ответы:
Мне удалось вылечиться через:
источник
rm <root repository path>/.git/modules/<path to the submodule>/refs/remotes/origin/HEAD
rm -rf .git/refs/remotes/origin
, но ты указал мне правильное направлениеНачните с выполнения шагов, предложенных в разделе Восстановление сломанного репозитория git :
.git/refs
еще что-нибудь полезноеgit reflog
и не подтвердите, что содержимое.git/logs/refs/heads/master
или какая-либо ветка, в которой вы были последнейgit fsck
, потенциально с--unreachable
или--lost-found
Мы надеемся, что это позволит вам выяснить, какой
master
должна быть ссылка, чтобы вы могли ее восстановить (то есть указать правильный SHA1.git/refs/heads/master
).Если какой-либо объект, содержащийся в этой фиксации, действительно поврежден, вы,
HEAD
к сожалению, не сможете восстановить свою фиксацию. Предполагая, что ваше рабочее дерево и / или индекс не повреждены, вы можете попробоватьgit reset --soft
(или в случае неудачиgit reset
) выполнить предыдущую фиксацию, а затем повторно выполнить фиксацию. Избегайте любых операций, которые изменяют ваше рабочее дерево sagit checkout -f
илиgit reset --hard
.источник
.git/logs/refs/heads/mybranch
. Показывает какую-то историю коммитов в эту ветку. Покопавшись в этом, я выбрал SHA и попытался отобразить их с помощьюgit show
. (У каждого коммита есть два SHA, я выбрал второй, прямо перед именем автора.) Последний был поврежден, но предыдущий мог бытьgit show
n, и я смог затем протолкнуть егоgit push origin abcdef:mybranch
.У меня была аналогичная проблема после синего экрана смерти в Windows 8.1
В этом месте у меня был файл ...
C:\www\<project>\.git\refs\remotes\origin\<problem-branch>
И он был пуст, тогда как в других файлах веток в этой папке есть длинные строки внутри.
NB у меня не было никаких изменений / коммитов
<problem-branch>
файлаgit fetch --all
получить ветку сноваЗатем автозаполнение вкладок снова заработало
источник
Если измененных файлов не так много, я думаю, что удобный способ решить эту проблему:
git commit -a
источник
мне удалось решить эту проблему, удалив главный файл в каталоге git \ refs \ Heads
источник
После вычисленным замораживания и аварии, мой мерзавец филиал был поврежден с сообщением:
git fatal: your current branch appears to be broken
. Я ничего не мог сделать.После этого
git fsck
упомянул, что ветка имеет расширениеerror: Invalid HEAD
.refs/heads/<branch>
имелinvalid sha1 pointer
.Следуя приведенным здесь параметрам, я открыл
.git/refs/heads/<branch>
в редакторе блокнота ++, и каждый из символов sha1 былNUL
.К счастью, мне нужно было только сбросить ветку в удаленное состояние, и это было в репозитории bitbucket. Я взял sha1 из конца удаленного репо и скопировал его в
.git/refs/heads/<branch>
сохраненный, затем сделалgit reset --hard HEAD
, и все вернулось к норме.источник
Я был достаточно идиотом, чтобы забыть нажать, и мой компьютер разбился при выполнении фиксации. Я мог бы восстановить все, кроме последнего коммита, открыв .git / logs / refs / Heads /
Этот файл содержит все коммиты (с их SHA) ветки, что я сделал для восстановления:
git checkout master
git reset --hard
Так что даже если вы сделаете глупую ошибку, целый день работы с git не вернет вас сразу :)
источник
Я не смог проверить свою основную ветку из-за ошибки cannot lock ref. В итоге я удалил:
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master
и вызывая эту команду git:
источник
Я знаю, что это слишком поздний ответ, но я получал эту ошибку, потому что у меня не было файла
origin/head
. Вы можете узнать это, запустивgit branch -r
. Если вы не видите, чтоorigin/head
указывает на удаленный источник, вы можете установить это, запустивgit remote set-head origin {{your branch name}}
.Теперь запустите
git branch -r
снова, и вы должны увидеть что-то вроде этого:origin/HEAD -> origin/develop
Я надеюсь, что это поможет всем, кто сталкивается с этой проблемой.
источник
Мой компьютер дважды выходил из строя, и в результате мой репозиторий git был сломан локально. Я не мог вытащить свои изменения, он попросил установить удаленное происхождение, но в gitKraken это не сработало.
В командной строке я получал эту ошибку
Я знал, что мои ссылки не работают и их нужно исправить. Что мне нужно было сделать, так это git bash (в SourceTree щелкните «терминал»). Затем перейдите в папку ссылок, подобную этой
там будет имя файла
master
, используйте,ls
чтобы увидеть, что находится в каталоге. Затем просто удалите его с помощью rm masterбац, поврежденного файла нет. Теперь, если вы введете команду git branch -a, она выведет это
Затем введите эту команду, и она исправит ваши ссылки
Подводя итог, если вы попытаетесь вытащить пульт, он должен показать пустое удаленное имя, которое было исправлено.
источник
У меня была такая же проблема, но не повезло, я не мог понять проблему. Я отнес свое репо в сторону, повторно клонировал репо с сервера и попытался слиться между ними. Конечно, он показал много файлов, не связанных с моей веткой, но помог изолировать необходимые файлы.
источник
Проверить, созданы ли MSWindows файлы desktop.ini, которые являются наследниками git? это делает для меня. Как только я удалю их все во вложенных папках каталога .git, все заработает.
источник
У меня была такая же проблема, когда Android Studio внезапно прекратила работу (из-за отключения питания компьютера).
Я решил это, скопировав содержимое моего
C:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\refs\heads\master
файла в свойC:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\refs\remotes\origin\master
файл.(Раньше я также включал опцию Force Push в Android Studio, но я не думаю, что это был необходимый шаг.)
Заметка:
Я нашел это решение, сравнивая содержимое файлов в моем
C:\Users\myusername\AndroidStudioProjects\MyBrokenApp\.git\
каталоге (включая подкаталоги.) К соответствующим файлам тех , кто в другом здоровом проекте - например,C:\Users\myusername\AndroidStudioProjects\MyHealthyApp\.git\
.У вас может быть другой файл, который поврежден, но, сравнив его с другим работоспособным проектом, вы сможете быстро определить, что не так.
Если у вас нет другого работоспособного проекта с настроенным git, возможно, стоит создать простой так же, как вы создавали свой сломанный проект, чтобы вы могли исследовать, сравнивать и исправлять и т. Д.
PS - Мое сообщение об ошибке (отредактировано) было:
warning: ignoring broken refs/remotes/origin/master.fatal bad revision 'refs/remotes/origin/master..refs/heads/master' during executing git -c core.quotepath=false log refs/remotes/origin/master..refs/heads/master --pretty=format --encoding=UTF-8 -M --name-status -c --
источник
Простите, если я буду повторять за кем-то (я еще не прочитал все отзывы). На мой взгляд, самый простой способ решить проблему - скопировать проект без .git и .idea, очистить его, клонировать из git, удалить все, кроме указанных выше каталогов, а затем вставить предыдущую копию во вновь созданное репо с .git и .idea . Надеюсь, это имеет смысл.
источник