Programing

Git 브랜치 이름에 슬래시 문자 사용

lottogame 2020. 5. 12. 07:56
반응형

Git 브랜치 이름에 슬래시 문자 사용


나는 인기있는 Git 프로젝트의 어딘가에 "feature / xyz"와 같은 패턴이 있다고 확신한다.

그러나 슬래시 문자로 분기를 만들려고하면 오류가 발생합니다.

$ git branch labs/feature
error: unable to resolve reference refs/heads/labs/feature: Not a directory
fatal: Failed to lock ref for update: Not a directory

(내 초기 시도)와 동일한 문제 :

$ git checkout -b labs/feature

Git에서 슬래시 문자로 분기를 어떻게 만들 수 있습니까?


이 스레드labs 에서와 같이 분기 가 아직 존재하지 않습니까?

파일과 이름이 같은 디렉토리를 모두 가질 수는 없습니다.

git이 기본적 으로이 작업을 수행하려고합니다.

% cd .git/refs/heads
% ls -l
total 0
-rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 labs
-rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 master
% mkdir labs
mkdir: cannot create directory 'labs': File exists

"디렉토리를 만들 수 없습니다"라는 오류가 나타납니다.
슬래시가있는 분기가 있으면 아래에 디렉토리 계층 구조로 저장됩니다 .git/refs/heads.


계층 적 분기 이름 (슬래시가있는 분기 이름)을 가질 수 있습니다. 예를 들어 내 저장소에는 그러한 지점이 있습니다. 한 가지주의 사항은 저장소에 분기 'foo'와 분기 'foo / bar'를 모두 가질 수 없다는 것입니다.

문제는 이름에 슬래시가있는 분기를 만드는 것이 아닙니다.

$ 자식 분기 foo / bar
오류 : 참조 참조 / 헤드 / 랩 / 기능을 해결할 수 없습니다 : 디렉토리가 아닙니다
치명적 : 업데이트에 대한 참조를 잠그지 못했습니다. 디렉토리가 아님

위의 오류 메시지는 'foo / bar'가 아닌 'labs / feature'브랜치에 대해 설명합니다 (copy'n'paste에서 실수가 아닌 한 세션의 일부를 편집 한 경우 제외). git branch또는 의 결과는 무엇입니까 git rev-parse --symbolic-full-name HEAD?


기본 이름을 가진 분기가 이미있는 경우 때때로이 문제가 발생합니다.

나는 이것을 시도했다 :

git checkout -b features/aName origin/features/aName

불행히도, 나는 이미라는 지점을 가지고 있었고 features질문 질문을 제외하고는.

지점을 제거하면 features문제가 해결되고 위의 명령이 작동했습니다.


제 경우에는 이미 사용하지 않는 labs지점 이 있다는 것을 잊었습니다 . 삭제하면 문제가 해결되었습니다.

git branch -d labs
git checkout -b labs/feature

설명:

이름 은 상위 분기 또는 일반 분기 일 수 있으며 둘다는 아닙니다. 그것이 가지 labs labs/feature 동시에 존재하지 않는 이유 입니다.

이 동작의 이유는 브랜치가 파일 시스템에 저장되어 있기 때문에 파일 labs과 디렉토리 labs를 같은 수준으로 가질 수 없기 때문 입니다.


나는 틀릴 수 있지만 슬래시가 원격 저장소와 관련이있을 때 분기 이름에만 나타납니다 origin/master.

참고 URL : https://stackoverflow.com/questions/2527355/using-the-slash-character-in-git-branch-name

반응형