2014-09-28 5 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를 사용 중입니다. 원격 서버가 생각 우분투를 실행합니다. – ShlomiTC

+0

'git remote --verbose가 원점을 표시하는 것 | 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

참고 : 힘내 2.12 (Q1 2017) 당신이 대소 문자를 구분 옵션으로 지점을 나열 할 수 있습니다로이, 발견하기 쉽게 될 것입니다와.

commit 3bb16a8 (2014 년 12 월 4 일) Nguyễn Thái Ngọc Duy (pclouds)을 참조하십시오.
(commit 73e494fJunio C Hamano -- gitster --에 의해 병합 된 2016 년 19 진수)

tag, branch, for-each-ref : 정렬 및 필터링 --ignore-case 추가.
이 옵션을 사용하면 그룹 함께 그들에게 bug-12-do-something, Bug-12-do-some-moreBUG-12-do-what 이름 가지를 가지고 할 때 큰 인 경우를 무시 정렬합니다.
외부 정렬은 git-branch 및 git-tag에서 채색 및 열 레이아웃을 잃어 버릴 수 있으므로 옵션이 아닐 수도 있습니다.

필자도 필사적이라면 추한 패턴 [bB][uU][gG]-*으로 항상 갈 수 있기 때문에 필터링에 대해서도 마찬가지라고 할 수 있습니다.

대소 문자를 구분하거나 대소 문자를 구분하지 않고 정렬 할 수 없습니다. (또는 다른 말로하면 ). branchtag의 경우 은 문제가되지 않습니다. 배관으로, 더 세밀한 제어가 필요할 수 있습니다. for-each-ref
필요하면 언제든지 --{filter,sort}-ignore-case을 추가 할 수 있습니다.

git branch --ignore-case --list