Удаление сломанных имен в 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

и это решило проблему для меня.