Удаление сломанных имен в Git (удаленная копия конфликта)
Я сохраняю свое репо в Dropbox, и однажды (см. дату ниже) он сошел с ума. Теперь я получаю это предупреждение каждый раз, когда я пытаюсь автозаполнять имя ветки
warning: ignoring ref with broken name refs/heads/develop (MacBook Pro conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/heads/master (MacBook Pro conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/remotes/origin/develop (MacBook Pro conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/remotes/origin/master (MacBook Pro conflicted copy 2015-02-28)
warning: ignoring ref with broken name refs/remotes/production/master (MacBook Pro conflicted copy 2015-02-28)
Как исправить это предупреждение?
Примечание. Для всех людей с дублированием-триггером - это не дубликат! Я просто хочу удалить приведенные выше ссылки, чтобы остановить получение предупреждения. Репо git неповреждено
Ответы
Ответ 1
когда dropbox находит конфликтующие файлы, он переименовывает их в filename (conflicted copy)
(как вы, возможно, знаете). Так что вам просто нужно переименовать эти файлы:
Это может быть довольно деликатным упражнением, так как вы будете возиться с вашим каталогом git; Лучше сначала возьмите копию всего вашего хранилища. Теперь перейдите в этот каталог
cd <repo>/.git/refs/heads
где вы найдете эти плохо переименованные файлы. Вам нужно будет проверить, какую из них оставить (обычную или затем конфликтующую копию), и удалить ненужные, переименовав конфликтующие копии по мере необходимости. Вам придется сделать то же самое в другом каталоге:
<repo>/.git/refs/remotes
РЕДАКТИРОВАТЬ: каждый из файлов, которые вы найдете, просто содержит хэш коммита, на который они указывают. Так что, если вы хотите проверить, какой из них оставить; проверьте, какой из коммитов действительно существует, и где вы хотите, чтобы эти ссылки указывали.
Ответ 2
Я получил это предупреждение, возможно, после обновления моей версии git (ubuntu 15.04 до 15.10) и должен был только удалить каталоги в .git/refs/remotes для старых удаленных пулов, которые я больше не настраивал.
Ответ 3
Я обрезал ветки, которые больше не были на моем пульте, запустив
git remote prune origin
и это решило проблему для меня.