Git ветвь постоянно воссоздается при растяжении

У меня есть ветвь git, которая постоянно "воссоздается" с чередующимся случаем письма каждый раз, когда я выполняю "git pull". Предполагая, что имя ветки "a" (или "A" для всех, что я знаю), один "w21 > pull" будет вызывать строку:

* [new branch]      a       -> origin/a

И затем следующий 'git pull' будет производить:

* [new branch]      a       -> origin/a

Это никогда не останавливается. Я не знаю, как была создана ветвь (или для чего она), поскольку кто-то ее создал.

Как приручить эту ветку и заставить ее перестать это делать?

Ответ 1

Как отмечено в комментариях, на пульте дистанционного управления существуют как refs/heads/A, так и refs/heads/A. Это означает, что существуют две разные ветки. (Git сам чувствителен к регистру, как и большинство файловых систем, отличных от Windows.)

Если, однако, вы используете Windows, это, вероятно, объяснит эту проблему. Refs создаются как отдельные файлы, по одному на ref. Git видит оба на удаленном компьютере, но затем, когда он пытается их локально обновить, существует только один, поэтому другой всегда создается. Внутренний порядок двух операций должен быть таким, чтобы вновь созданный перезаписывал другой, что приводило к чередованию.

Если ссылки ref указывают на одно и то же commit, то решение должно удалить одно из них на пульте дистанционного управления:

git push origin :refs/heads/A

Ответ 2

Кажется, что origin/a и origin/A удаляются локально, так как вы получаете [новую ветку] все время. Если кто-то или что-то удаляет эти ссылки, вы будете получать эти ветки каждый раз, когда вы извлекаете (или тянете) с пульта. Вы пытались повторно клонировать хранилище? Вы единственный, у кого есть эта проблема?

Ответ 3

Я просто столкнулся с этой проблемой. В моем случае одно из названий ветвей находилось в прямом спуске от другого, поэтому я удалил ветку с удаленного, поскольку она не добавляла значения. Предположим, что ветвь для удаления - это "a", затем эта команда удалит ее с удаленного (с именем "origin" ):

git push origin :a

Пара извлечений и проблема исчезла (пока кто-то еще не отталкивает ее снова)