Невозможно вытащить, git не может разрешить ссылку ORIG_HEAD

Если значение someProperty дорого рассчитать, это потенциально может быть проблемой.

Это то, что мы называем преждевременной оптимизацией. В редком случае, когда профилировщик говорит вам, что вычисление свойства настолько необычайно дорого, что его трижды, а не один раз оказывает значительное влияние на производительность, вы добавляете кеширование, как вы описываете. Но если вы не делаете что-то действительно глупое, как факторинговые простые числа или получаете доступ к базе данных в геттере, ваш код, скорее всего, имеет десяток худших недостатков в тех местах, о которых вы никогда не думали.

29
задан vvondra 13 May 2012 в 08:26
поделиться

6 ответов

У меня была эта проблема, и я решил ее, удалив файл .git / ORIG_HEAD, а затем повторил попытку. Файл .git / ORIG_HEAD был 0 байтов вместо ссылки на git, которую он должен был содержать, поэтому я просто избавился от него.

89
ответ дан Brian Minton 13 May 2012 в 08:26
поделиться

Мне пришлось удалить .git/ORIG_HEAD.lock, а не (просто) .git/ORIG_HEAD.

0
ответ дан Gallaecio 13 May 2012 в 08:26
поделиться

Проверьте git remote prune origin, упомянутый в дополнение к git gc --prune=now в « git pull не удается« невозможно разрешить ссылку »,« невозможно обновить локальную ссылку »».

Если у вас есть .git/rebase-merge, рассмотрите возможность его удаления (как в « git rebase и удаленных перебазирующих ветвях, вызывающих сообщение об ошибке« Интерактивная перебазировка уже запущена »»)

Проверьте также содержание .git/HEAD, как и в , в этом выпуске .

Если это какое-либо повреждение репо (см. « Git поврежденная основная ветка »), попробуйте сначала снова клонировать репо и повторно применить свои текущие модификации поверх этого репо (через git format-patch если нужно)

9
ответ дан Community 13 May 2012 в 08:26
поделиться

Этот ответ не решает проблему ОП, но решает аналогичную.

У меня была похожая проблема (я получил error: cannot lock ref ... is at ... but expected ... ), но это было потому, что в репо было две ветви с одинаковым именем, но с другим регистром. Может быть, этот ответ может помочь людям, которые попадают сюда, я не смог найти ответ в другом месте. Я удалил одну из веток, а затем удалил соответствующую ссылку из: .git/ref/.../branch_name, затем git pull. Это происходит из-за того, что я работал над файловой системой без учета регистра, в то время как две ветви были перенесены в файловую систему с учетом регистра.

Например, две ветви - BRANCH1 и branch1, и они оба под origin дистанционно. Сначала удалите одну из ветвей, например BRANCH1. Затем удалите его ссылку:

rm .git/refs/remotes/origin/BRANCH1

Затем git pull, и все должно быть в порядке.

8
ответ дан Ariel Cabib 13 May 2012 в 08:26
поделиться

Этот файл создается, когда вы git pull находитесь в репозитории, чтобы не git pull в том же репозитории больше, чем один в данный момент, и он удаляется после завершения процесса. Если процесс умирает или становится зомби, то файл не удаляется, и вам нужно вручную проверить, существует ли еще процесс git. Если процесс не существует, вы должны удалить файл и попытаться git pull снова.

1
ответ дан Romulus 13 May 2012 в 08:26
поделиться

У меня были проблемы с разрешениями Unix, я использовал одно и то же git-репо с двумя разными пользователями (один был root, другой был моим частным пользователем).

Итак, мне пришлось изменить владельца файла на .git/ORIG_HEAD на моего личного пользователя, который решил проблему.

chown myuser:mygrp .git/ORIG_HEAD
0
ответ дан gaborsch 13 May 2012 в 08:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: