2014-09-28 4 views
4

Я получаю удаленные ветви и застревает в какой-то петле.Git получить ветку один раз с нормальным именем, и один раз с заглавной буквы

Принести один раз и получить:

$ git fetch 
* [new branch]  minorRelease/something-> origin/minorRelease/something 

А потом я снова принести и получить:

$ git fetch 
* [new branch]  minorRelease/Something-> origin/minorRelease/Something 

той же отрасли, но с капиталом S.

Я пытался удалить файл из следующей папки .git/refs/remotes/origin/minorRelease, но при выборке снова, я получаю как и вернуться к выше циклу:

$ git fetch 
* [new branch]  minorRelease/Something-> origin/minorRelease/Something 
* [new branch]  minorRelease/something-> origin/minorRelease/something 
+0

Какая платформа вы используете? Является ли его файловая система нечувствительной к регистру? – Jubobs

+0

Windows 7, используя git bash. Думаю, удаленный сервер работает ubuntu. – ShlomiTC

+0

Что делает 'git remote --verbose show origin | grep "tracked" 'скажите? – Jubobs

ответ

5

@torek является правильным, что это вызвано различием Linux и Windows. Linux чувствителен к регистру, а Windows нет. Вы можете использовать ls-remote для отображения ветвей на сервере.

git ls-remote --heads origin 

И я думаю, в вашем случае, вывод должен включать в себя две ветви с только случай S различной.

ref/heads/minorRelease/Something 
ref/heads/minorRelease/something 

Удаленная ветка удалена, если вы обнаружите, что один из них фактически дублируется. А затем снова сделайте fetch. Теперь все должно быть хорошо.

git push origin :minorRelease/Something 
git fetch 
+1

Слишком продублированы, поэтому я удалил ту, которая была в нижнем регистре (первая буква первой буквы - это наше соглашение). Благодарю. – ShlomiTC

1

Примечание: с Git 2.12 (Q1 2017), это станет легче определить, как вы можете перечислить ветвь с регистрозависимости вариант.

См. commit 3bb16a8 (04 декабря 2016 года) от Nguyễn Thái Ngọc Duy (pclouds).
(слито Junio C Hamano -- gitster -- в commit 73e494f, 19 Декабрь 2016)

tag, branch, for-each-ref: добавить --ignore-case для сортировки и фильтрации.
Этот параметр делает сортировку игнорировать случай, который является большим, когда у вас есть ветви названные bug-12-do-something, Bug-12-do-some-more и BUG-12-do-what и хотите, чтобы сгруппировать их вместе.
Сортировка извне не может быть вариантом, потому что мы теряем раскраску и раскладку столбцов из git-branch и git-tag.

То же самое можно сказать о фильтрации, но это, вероятно, менее важно, потому что вы всегда можете пойти с уродливым шаблоном [bB][uU][gG]-*, если вы в отчаянии.

Вы не можете иметь чувствительную к регистру фильтрацию и сортировку без учета регистра (или наоборот) с этим. Для branch и tag, что должно быть без проблем. for-each-ref, как водопровод, может потребоваться более тонкий контроль.
Но мы всегда можем добавить --{filter,sort}-ignore-case, когда есть необходимость для этого.

git branch --ignore-case --list 

 Смежные вопросы

  • Нет связанных вопросов^_^