nvie의 git-flow 모델을 따르는 git branching 모델이있는 프로젝트가 있습니다.
릴리스 브랜치는 SemVer 형식으로 명명 됩니다. 예 :v1.5.2
릴리스 분기에 생산을위한 녹색 표시등이 제공되면 분기를 마스터로 병합하고 태그를 적용한 후 분기를 삭제하여 분기를 닫습니다.
릴리스 브랜치를 즉시 삭제함에 따라 브랜치에 태그를 지정할 때 동일한 식별자를 사용했습니다. 예 : v1.5.2
릴리스 브랜치를 닫는 데 사용하는 명령은 다음과 같습니다.
$ git checkout master
$ git merge v1.5.2
$ git tag -a v1.5.2 -m "Version 1.5.2 - foo bar, baz, etc"
$ git branch -d v1.5.2
$ git branch -dr origin/v1.5.2
$ git push origin :v1.5.2
$ git push
$ git push --tags
이것은 대부분의 경우 작동하는 것으로 보이지만 git repo의 다른 인스턴스 (예 : 다른 dev 시스템 또는 스테이징 환경)에서 v1.5.2 분기의 로컬 체크 아웃이있는 시나리오에서 문제가 발생합니다.
이 git push origin :v1.5.2
명령은 원격에서 분기를 삭제하지만 모든 저장소에서 분기의 로컬 버전 (있는 경우)은 삭제하지 않습니다.
이는 v1.5.2
해당 리포지토리에서 체크 아웃 을 시도 할 때 모호한 참조로 이어집니다 .
$ git checkout v1.5.2
warning: refname 'v1.5.2' is ambiguous.
이것은 가지에 대해 다른 구문을 사용하여, 예를 들면 않고 피할 수있다 release-v1.5.2
, 또는 v1.5.2-rc
?
아니면 피할 수 없어서 삭제 된 브랜치와 동일한 이름의 태그를 만드는 것이 근본적으로 나쁜 생각입니까?
git checkout
는 모호한 참조가있을 때 분기를 통해 태그를 체크 아웃 한다고 표시하지만 gist.github.com/tommarshall/9376724 참조 하십시오 . 이것은 최신 버전의 git에서 변경된 것입니까?gitconfig
이 동작을 얻기 위해 설정할 수있는 플래그가 있습니까?