자식 주제 분기 란 무엇입니까?


137

자식 주제 분기 란 무엇입니까? 어떤면에서 일반 지점과 다른가요? 토픽 브랜치가 아닌 브랜치가 있습니까?

답변:


114

주제 지점은 로컬로 만드는 것이 일반적으로 경량 가지이며, 대한 의미있는 이름이 그 당신을 . 버그 수정 또는 기능 (기능 분기라고도 함)을 완료하는 데 약간의 시간이 소요될 수 있습니다.

다른 유형의 지점은 "원격 지점"또는 "원격 추적 지점"입니다. 이 유형의 브랜치는 다른 사람의 작업 개발을 따르며 자신의 저장소에 저장됩니다. 을 사용하여이 분기를 주기적으로 업데이트하여 git fetch다른 곳에서 발생하는 일을 추적합니다. 다른 사람의 변경 사항을 따라 잡을 준비가되면 git pull가져 오기 및 병합에 모두 사용 합니다.

또한 동일한 저장소에서 본질적으로 완전히 분리 된 파일 트리 인 다른 종류의 분기를 보았습니다. 예를 들어 Git 리포지토리 자체 에는 master 브랜치 와 완전히 다른 내용을 포함하는 manhtml 이라는 헤드 가 있습니다 . 이러한 유형의 가지가 일반적으로 무엇인지 모르겠습니다.


6
나는 일반적인 조상의 커밋없이 두 개의 브랜치를 갖는 방법을 찾고 있었고 이것을 발견했습니다 : madduck.net/blog/…
Nicolas

1
별도의 트리를 사용하여
max

1
토픽 브랜치는 왜 로컬이어야한다고 말합니까? 토픽 브랜치를 푸시하고 싶지 않다고 생각할 이유가 없습니다. 마찬가지로, 다른 개발자가 자신 만의 주제를 만들 수도 있습니다. 이 답변은 브랜치의 완전히 관련되지 않은 두 가지 속성, 즉 브랜치가 로컬인지 아닌지가 전혀 브랜치 브랜치인지와 관련이없는 것처럼 보입니다.
Jean-Paul Calderone

@ Jean-PaulCalderone : 토픽 브랜치 로컬이어야 한다고 생각하지 않습니다 . 물론, 둘 이상의 개발자가 작업중인 경우 토픽 브랜치를 원격으로 추적 할 수 있습니다.
Greg Hewgill

2
나는 그 대답이 암시한다고 생각합니다. 왜 "... 당신이 로컬에서 만드는 ..."과 "...는 당신에게 의미있는 이름을 가지고 있습니다." "토픽 브랜치"를 구성하는 것의 본질적인 부분? 귀하의 답변의 첫 번째 문장은 이것이 주제 분기의 중요한 기능이지만 실제로는 지점의 "주제"와 직교인지 여부를 강력히 제안합니다. "원격 브랜치"를 설명하는 다음 단락에서는 토픽 브랜치의 "로컬로 생성 된"부분이 중요하다는 생각을 다시 한 번 강조합니다. 이러한 관련없는 지점 특성을 강조하기 위해이 답변의 초점을 다시 맞추는 것이 좋습니다.
Jean-Paul Calderone

81

기술적 인 용어가 아닙니다. 특정 기능을 구현하거나 버그를 수정하기 위해 만들어진 지점을 나타냅니다. "주제"는 본질적으로 지점을 만든 이유입니다.


2
네. bob, alice, mat 등
webmat

... 토픽 브랜치와 피처 브랜치는 같은 것입니다. 맞습니까?
Betlista

@Betlista 더 많거나 적습니다.
mipadi

28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches 가 이것을 잘 설명합니다.

"주제"분기는 단일 "주제"(버그 수정, 새로운 기능 또는 실험 아이디어)를 작업 할 때 사용하는 별도의 분기입니다. 다음과 같은 이유로 "마스터"대신 직접 토픽 브랜치를 작업하는 것이 좋습니다.

{... 방문 링크 ...}

따라서 이러한 모든 이유 때문에 단일 커밋 버그 수정 등과 같은 간단한 기여에도 제출을 준비하기 위해 토픽 브랜치를 사용하는 것이 좋습니다.

이 샘플은 예제도 제공합니다. 실제로 제가 생각하게 된 것은 아마도 대부분의 상점들이 이미하고있는 것입니다. 내가 함께했던 모든 민첩한 프로젝트. 나는 이것이 "기술적 인 용어는 아니다"라는 말을 뒤집었다. 왜냐하면 이것이 머리에 못을 박았다고 생각하기 때문이다.


4

토픽 브랜치가 아닌 가장 두드러지고 중요한 브랜치 유형은 공개적으로 사용 가능한 주요 저장소에서 브랜치를 해제하는 것처럼 보입니다.

아마 당신에게 맞을 수도 있지만, 그것은 당신과 당신이 생각하고있는 프로젝트에 관한 것입니다. 그것은 Git에 의해 결정되지 않습니다.

대부분의 버전 제어 시스템 (특히 중앙 집중식 시스템)은 브랜치를 사용하는 것이 의미가있는 것을 포함하여 특정 워크 플로우를 규정하거나 시행합니다. Git (및 대부분의 분산 VCS)은 워크 플로, 분기에 사용되는 시점, 커밋시기, 사용되는 리포지토리 등이 모두 사용자와 정책 (사용자) 간의 계약에 의해 선택된다고 생각합니다. 따라서 Git은 기술적으로이를 강제하지 않습니다.

이것은 Git을 배우기가 어렵게 만든 것들 중 하나입니다. 올리버 스틸 (Oliver Steele)은 커밋 정책 (Commit Policies) 에 대한 글을 사용자 관점에서 설명했다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.