버전 지정을 위해 태그 대 릴리스/베타 분기를 사용해야 하는 이유는 무엇입니까?
저는 약 1년 동안 git를 사용해 왔으며 다른 버전의 커밋에 태그를 지정하고 싶습니다.태그 작업에 사용할 명령어에 대한 많은 정보를 찾았지만 알고 싶은 것은 태그를 사용하는 이유입니다.1.1.0새로운 명령어들로 내 마음을 흐리게 할 필요가 없단 말인가요?
분기보다 태그를 다는 데는 여러 가지 좋은 이유가 있을 텐데 그 장점이 무엇인지 알고 싶습니다.
태그는 불변입니다.
"1.0.0"이라는 이름의 지점을 만들 수는 있지만, 사용자 또는 커밋 권한을 가진 모든 사용자는 해당 지점으로 이동하여(의도적이든 아니든) 1.0.0의 의미를 변경할 수도 있습니다.
일단 태그를 생성하면 태그를 사용할 수 없습니다. 태그 1.0.0은 정확히 그 의미이며 변경할* 수 없습니다.
그것이 꼬리표와 나뭇가지 사이의 주요한 현실적인 차이점입니다.
* 태그를 삭제하고 다시 생성하여 태그를 변경할 수 있지만 실수로 변경할 수는 없습니다.
태그는 주로 커밋을 태그하여 프로젝트의 특정 버전을 나중에 참조하기 위해 사용됩니다.물론 브랜치를 언제든지 사용할 수 있지만 버전을 많이 변경하면 사용하지 않거나 거의 사용하지 않는 브랜치가 많아집니다.
실제로 태그는 분기가 없는 분기로, 프로젝트의 특정 버전을 참조하여 복잡성을 줄이는 방법을 추가한 것일 뿐입니다.
편집: 여기 제가 모든 프로젝트에 사용하는 git를 사용하는 좋은 방법이 있습니다.
분기와 태그는 동일한 것입니다(커밋을 가리키는 포인터, 일명)."ref"))를 제외하고는 분기가 자동으로 다음 커밋으로 이동하는 동안 태그는 동일한 커밋에서 영원히 유지됩니다1.
릴리스를 만들 때 일반적으로 해당 릴리스가 구축된 코드의 "스냅샷"을 표시하고 코드를 계속 진화시켜도 이를 계속 표시하기를 원하므로 태그를 사용합니다.
분기를 사용하려고 하면 다른 커밋으로 실수로 이동할 수 있습니다. 이 커밋에서는 릴리스가 구축되지 않았습니다.
1 물론 태그를 삭제하지 않는 한 말입니다.
참고: 이것이 오래된 질문이라는 것을 깨달았지만, 분기와 태그 간의 유사성(그리고 한 가지 중요한 차이점)이 다른 답변에서 가능한 명확하게 설명되지 않았다는 것을 느꼈습니다.
저는 태그와 분기를 모두 통합한 워크플로우를 사용하는 편입니다.태그는 공개된 코드나 주목할 만한 개발 빌드를 표시하는 데 유용합니다.분기는 특정 버전과 관련된 모든 변경 사항을 추적하는 데 유용합니다.
다음은 이러한 유형의 워크플로우에 대한 좋은 글입니다. http://nvie.com/posts/a-successful-git-branching-model/
태그를 사용하여 기록에서 중요한 커밋을 기록합니다."이것은 빌드 서버가 고장난 비 오는 목요일에 이 버전에 사용한 정확한 커밋이었습니다."태그 대신 분기를 사용하면 사용한 정확한 커밋을 알 수 없습니다.해당 커밋에 대한 정확한 해시를 수동으로 적지 않는 한 "우리는 이 분기 어딘가에서 버전 1.1.0을 출시했습니다."라고만 알 수 있으므로 처음부터 태그를 사용합니다. :)
다른 답변들 외에 여기 제 2센트가 있습니다.
단답형:릴리스 버전에 태그 사용
긴 답변: 저는 구체적으로 릴리즈 버전에 태그를 사용하는 것이 브랜치를 사용하는 것보다 낫다고 생각합니다.릴리스를 업데이트해야 하는 경우 태그가 지정된 커밋에서 분기하기만 하면 해당 분기(핫픽스 분기일 가능성이 높음)에 대한 작업이 완료되면 새 버전으로 해당 분기 맨 앞에 새 태그를 생성합니다.그런 다음 해당 분기를 다시 마스터/개발로 병합합니다. 소스 코드에 다시 병합해야 할 가능성이 높은 핫픽스가 아니면 릴리스 버전을 변경하면 안 되기 때문입니다.그러면 해당 분기는 더 이상 필요없으니 삭제해주세요.새 버전에 다른 핫픽스를 적용해야 하는 경우 동일한 단계를 반복합니다.
작성자의 Git 워크플로우에 핫픽스를 병합하는 방법을 보여주는 다음 기사의 섹션을 참조하십시오 - https://hackernoon.com/a-branching-and-releasing-strategy-that-fits-github-flow-be1b6c48eca2
언급URL : https://stackoverflow.com/questions/9810050/why-should-i-use-tags-vs-release-beta-branches-for-versioning
'programing' 카테고리의 다른 글
| SQL 동적 열 이름(Update with prepared 문 포함) (0) | 2023.09.06 |
|---|---|
| @Spy 및 @Autowired 함께 사용 (0) | 2023.09.06 |
| 텍스트 편집에 초점을 프로그래밍 방식으로 설정하고 키보드를 표시하는 방법 (0) | 2023.09.06 |
| AVAssetReader로 파형 그리기 (0) | 2023.09.06 |
| 최소 키의 자녀 내부 부모: 100% 키를 상속하지 않음 (0) | 2023.09.06 |