Полное сообщение:
error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> origin/user (unable to update local ref)
git push --force
. Попробуйте запуститьgit pull --force
.Ответы:
Если вы запускаете git в файловой системе, которая не чувствительна к регистру (Windows или OS X), это произойдет, если есть две ветви с одинаковым именем, но разной капитализацией, например,
user_model_changes
и такUser_model_changes
как обе удаленные ветви будут совпадать с одной и той же ссылкой отслеживания ,Удалите неправильную удаленную ветку (у вас не должно быть ветвей, которые отличаются только регистром), и тогда
git remote prune origin
и все должно работатьисточник
.git\refs\remotes\origin
папке, а затемgit pull
снова.Постоянное исправление
git update-ref -d
разрешил мой экземпляр этой ошибки, напримерОбратите внимание, что это не влияет на пульт.
В моем случае последующее
git fetch
извлечение этой ветви снова и последующие git fetches / pull больше не давали ошибку «удаленный реф в, но ожидается»Если это не сработает, временное исправление:
Также обратите внимание, что если вас не волнует рассматриваемая ветка (например, вы просто хотите обновить master, а не origin / user),
git pull
обходной путь - это выборка, а затем просто объединить нужную ветку, напримеристочник
Просто удалите папки и файлы в
\.git\refs\remotes\origin
. Работает, когда у вас нет внесенных изменений.источник
Я запустил это, чтобы решить проблему:
источник
Используйте две нижеприведенные команды одну за другой.
Это решит вашу проблему.
источник
Мне пришлось удалить мою ветку из командной строки по адресу:
а затем вручную делать:
Я смог вытащить изменения.
Примечание: я использовал SourceTree и не смог сделать это.
источник
.git\packed-refs
прежде чем она была исправлена для меня.Хард ресет также решит проблему
источник
Более четкие шаги
в терминале
делай
ls
, увидишь несколько веток и ГОЛОВУУдалите ветку, которая, по вашему мнению, имеет проблему
Если это не сработало, удалите все ветки / HEAD
Надеюсь, это работает сейчас.
источник
git update-ref -d <branchname>
?Попробуйте это, у меня получилось. В вашем терминале:
git remote prune origin
.источник
К сожалению, команды GIT, такие как prune и reset или push, не работали для меня. Чернослив работал один раз, а затем проблема вернулась.
Постоянное решение, которое работало для меня, состоит в том, чтобы редактировать файл git вручную. Просто перейдите в папку проекта .git и затем откройте файл pack-refs в текстовом редакторе, таком как Notepad ++. Затем перейдите к строке с ошибочной веткой и обновите ее до ожидаемой.
Если у вас есть сообщение вроде:
«ошибка: невозможно заблокировать ref 'refs / remotes / origin / feature / branch_xxx': находится по адресу 425ea23facf96f51f412441f41ad488fc098cf23, но ожидается 383de86fed394ff1a1aeefc4a522d886adcecd79"
затем в файле найдите строку с 'refs / remotes / origin / feature / branch_xxx'. Гид будет ожидаемый (2-й) - 383de86fed394ff1a1aeefc4a522d886adcecd79. Вам нужно изменить его на реальный (1-й) - 425ea23facf96f51f412441f41ad488fc098cf23.
Повторите эти действия для других ветвей, и вы будете продолжать. Иногда после повторной выборки мне приходилось повторять те же ветки, которые я уже «исправил» ранее. При повторной загрузке GIT обновляет руководства и дает вам самое последнее.
В любом случае, проблема не в том, чтобы остановить шоу. Список филиалов обновляется. Это скорее предупреждение.
источник
git for-each-ref --format = 'delete% (refname)' refs / original | git update-ref --stdin git reflog expire --expire = сейчас - все git gc --prune = сейчас
источник
То же самое и здесь, но в комментариях ничего нет, это правильно в моем случае, у меня есть только одна ветвь (master) и я использую только файловую систему Unix, эта ошибка возникает случайно, когда я запускаю git fetch --progress --prune origin, и ветвь впереди или «происхождение / мастер». Никто не может совершить, только 1 пользователь может сделать толчок.
ПРИМЕЧАНИЕ: у меня есть подмодуль в репозитории acme, и у acme есть новые изменения подмодуля (новые коммиты), мне нужно сначала выполнить обновление подмодуля с обновлением подмодуля git.
Чтобы решить эту проблему (в моем случае), просто запустите первый git push, если ваша ветка опережает источник.
источник
Я знаю, что это старо, но у меня есть собственное исправление. Поскольку я использую исходное дерево, эта ошибка происходит из-за того, что кто-то создает новую ветку. Исходное дерево смущено этим. После того, как я нажимаю кнопку «Обновить» рядом с полем «Удаленная ветвь для извлечения», создается впечатление, что sourcetree обновил список ветвей, и теперь я могу выполнить успешно.
источник
У меня была та же самая проблема, которая была вызвана, потому что я переустанавливал к более старому коммиту, хотя я уже выдвинул к удаленной ветви.
Я решил это, удалив мою локальную ветвь, затем проверив исходную ветвь,
git checkout origin/my_branch
а затем выполнивgit checkout my_branch
источник
После постоянного поиска, это решение, которое сработало для меня, влечет за собой сброс / удаление Upstream
источник