2009-06-09 8 views
7

두 개의 분기가있는 자식 저장소가 있습니다. 하나는 제조/테스트에 사용되는 코드이고 다른 하나는 실제 생산 펌웨어입니다 (거의 동일합니다). 이제 제조업체에 보내기 위해 릴리즈를 잘라야 할 때가되었으므로 두 분기에 적절한 태그를 넣고 싶습니다.git에서 여러 개의 브랜치에 태그 붙이기?

그러나 git에서는 두 태그에 동일한 태그 이름을 넣을 수 없습니다. 개별적으로 태그를 붙이려고하면 초 분기에 태그를 추가 할 때 태그가 이미 있음을 알 수 있습니다. 두 개의 커밋을 git 태그에 전달하려고 시도했지만, 그 중 하나도 마음에 들지 않았습니다. 필자는 항상 두 단계의 태그를 잠금 단계에 태그 할 필요는 없지만 이름 충돌을 피하기 위해 태그에 임의의 문자를 추가하고 싶지는 않습니다.

내가 원하는 것을 수행 할 수있는 방법이 있습니까? 아니면 잘못된 것을하고 싶습니까?


하나의 브랜치는 제조 과정에서 장치가 올바르게 조립되었는지 테스트하기 위해 제조하는 코드입니다. 다른 지점은 제품에 포함 된 코드입니다. 실제로 릴리스 당 두 개의 분기가 아닙니다. 이것은이 제품의 첫 번째 릴리스이므로 두 가지 분기에 대한 첫 번째 릴리스이므로 두 가지 분기에 'release-1.0'태그를 지정하려고했습니다.

답변

13

잘못된 것을하고 싶습니다. 태그의 목적은 명확하게 특정 개정을 식별하는 것입니다. 내가 너라면, 프로덕션 지점에만 태그를 지정하고 테스트 지점에는 태그를 남기지 않을 것입니다.

그러나 릴리스 당 두 개의 독립 브랜치가 있다는 것은 이상한 일입니다. 왜 이런거야? 대답은 더 나은 해결책을 설명하는 데 도움이 될 수 있습니다.

  • appname-1.0-manufacturing
  • appname-1.0-production
  • : 태그가 정말 같은 개정을 가리 안되지만, (잠재적으로) 다른 버전은 태그가 같은 것을해야하기 때문에


그런 식으로 각 태그가 속한 릴리스와 코드가 끝난 위치를 알 수 있습니다.

+1

하나의 브랜치는 제조 과정에서 장치가 제대로 조립되었는지 테스트하기 위해 코드를 사용합니다. 다른 지점은 제품에 포함 된 코드입니다. 릴리스 당 실제로 두 개의 분기가 아닙니다. 이것은이 제품의 첫 번째 릴리스이므로 두 가지 분기에 대한 첫 번째 릴리스이므로 두 가지 분기에 'release-1.0'태그를 지정하려고했습니다. 바보 나. –

+0

감사합니다. 덧글에 추가 정보를 추가했습니다. –

+1

BTW. 태그 이름은 계층 구조가 될 수 있으므로 release-1.0 (또는 v1.0)과 test/release-1.0을 사용할 수 있습니다. –

5

태그는 단지 단일 커밋에 이름을 부여하기 때문에 원하는대로 할 수는 없습니다.

원하는 결과가 무엇인지 궁금합니다. 내 말은, 태그의 목적 중 하나는 나중에 체크 아웃 할 수있는 이름이된다는 것입니다. 그래서 두 개의 가지를 가리키는 태그에 git checkout이 있다면 ... 어떻게됩니까?

+0

태그를 사용하면 그 당시의 모든 지점의 적절한 버전을 얻을 수 있다고 생각했습니다. 나는 그것 이상으로 많은 생각을하지 않았다. 분명히해야합니다. –

+0

태그가 단일 커밋에 이름을 부여하면 특정 커밋을 여러 가지 분기로 선택했을 때 어떤 일이 발생합니까? 그 태그를 체크 아웃하는 효과는 무엇입니까? –

+0

태그는 적용된 커밋에 머물러 있습니다. 체리 선택은 각기 다른 지점마다 새로운 커밋을 만듭니다. 이 새로운 커밋은 원래 커밋과 동일한 변경 사항을 갖지만 모두 다른 커밋입니다. –

2

파티에 늦게 오는 것이지만 다른 방법으로는 두 개의 분기를 병합하는 것이므로 충돌없이 공존 할 수 있다고 가정 할 때 테스트 코드와 생산 코드의 상태가 커밋에 포함됩니다 (이 경우에는 이 시도는 합병이 얼마나 힘든가에 따라 달라질 수 있습니다.) 또한 테스트 브랜치와 프로덕션 브랜치를 태그 할 때 동기화를 유지하려고 할 때 우연히 잘못된 브랜치에 태그를 지정하는 상황을 피할 수 있습니다.