2011-10-04 2 views
15

git 버전 1.7.5.4은 어떤 항목으로 병합해도 상관이 없습니까?

나는 약 5 개의 가지를 가지고 있습니다. 모두 동일한 초기 지점에서 온 것입니다.

2 개의 분기를 병합하고 싶습니다. 말하자면, branch1과 branch2. 이 가지들은 많은 차이가 있습니다.

현재 branch1에서 작업 중이며 branch2에서 구현 한 몇 가지 변경 사항이 branch1에 있음을 알고 있습니다.

병합하는 가장 좋은 방법은 무엇입니까?

checkout branch2 and merge branch1 

또는

checkout branch1 and merge branch2 

아니면이 문제가 당신이 필요로하는 지점 다른 지점과 병합 체크 아웃하지 않는 이유는 무엇입니까?

답변

16

일반적으로 두 분기가 주제 또는 기능 분기인지 여부는 중요하지 않습니다.

그러나 게시 된 항목을 표시하는 통합 분기 또는 분기가있는 경우, 장기 실행 통합 분기를 체크 아웃 된 분기로 사용하고 다른 분기를 통합하십시오.

이 이유는 병합 커밋이 첫 번째 부모 커밋을 주 분기에서 오는 커밋으로 표시하기 때문입니다. 해당 브랜치의 내역에 대한 트리 쉐 사양은 이제 간단합니다.당신이 사이 어딘가에 다른 지점에서 통합 단순히

git show head~4 

경우가이 지점에서 4 번째로 마지막 커밋 찾으려면 병합이 다른 일을 한 곳 명시 적으로 두 번째 커밋로 전환해야 way :

git show head^^2^^ 

이로 인해 다른 분기에서 주요 분기에 문제가 발생할 수 있습니다. 주제 또는 지형지 물 분기로 병합하는 것을 "백 병합"이라고하며 좋은 아이디어는 아닙니다. 리누스 토발즈 (Linus Torvalds)는 기고가들이 그렇게했을 때 최고의 자리를 불렀다. 피쳐 지사가 더 이상 원하지 않는 것들을 포함하는 오래된 테스트 병합을 가져올 것이기 때문에 그가 주요 개정판을 위해 합병하기를 원하는 기능을 명확하게 분리 할 수는 없습니다.

그래서 결국 하나의 가지가 더 중요하고 단순한 기능 이상인 경우이를 확인하고 거기에서 병합하십시오. 첫 번째 부모가 항상 그 지점이 있었던 지점임을 알기 때문에 쉽게 역사를 볼 수 있습니다. 그렇지 않다면, 병합 커밋 메시지를 읽는 것에 의존해야하며 재미가 없습니다. :)

나는 조직 유지 가지의 엄격한 방법을 보여줍니다 BPF에 대한 기사를 작성했습니다 : http://dymitruk.com/blog/2012/02/05/branch-per-feature/

+1

유용한 –

+0

건배 최초의 부모 경로를 유지하기 +1 좋은 점! 이러한 실수는 역사 탐색을 악몽으로 만듭니다. –

3

이상한 커밋을 선택하는 것보다는 전체 분기를 병합하고 싶다고 가정하고 있습니다. 또한, 내가 아래에서 말하고자하는 것은 무겁게이 very helpful blog post by Junio C. Hamano을 기반으로합니다. 여러분이 브랜치의 철학에 대해 더 알고 싶다면 읽기를 강력히 권합니다. 문제는 각 지점의 목적에 결정적으로 의존하기 때문에

불행하게도,이에 대한 사운드 조언을 제공하기 위해 귀하의 질문에 정말 충분한 정보가 없다. 하나의 일반적인 시나리오에서, 예를 들어, 하나는 master 브랜치를 가질 수 있으며 항상 안정적인 릴리스를 생성 할 수 있어야합니다. 누군가 소프트웨어에 새로운 기능을 추가하기를 원하면 이라는 마스터에서 토픽 브랜치를 작성하고 리베이스 (rebase), 철저한 테스트 등을 수행 할 수 있습니다. 모든 사람이 해당 지점에 만족하면 awesome-featuremaster에 병합하는 것이 좋습니다. 다른 방법은 아닙니다. (반대로 말하자면, master의 모든 것이 topic 브랜치가 사용하는 "멋진 기능"을 구현하는 데 도움이된다는 것을 의미합니다.) 그러나 각 브랜치의 목적을 알기 때문에 어느 방향으로 라운드가 올바른지 알 수 있습니다 .

분기 및 병합은 git에서 매우 쉽기 때문에 highly structured에서 rather simpler까지 다양한 워크 플로가 완전히 구조화되지 않은 상태로 지원됩니다. "완전히 구조화되지 않은"이란 말은 개발의 여러 가지 가지가 있음을 의미합니다. 어떤 방식 으로든 사람들이 특정 지점에 원하는 기능을 포함하는 것처럼 보입니다. 그런 상황에있는 경우 명확하게 구분되지 않은 경우 각각의 지사에 대해 정의 된 목적 일 경우, branch1branch2에 병합할지 다른 방식으로 병합할지는 중요하지 않을 수 있습니다. 그러나 각 분기에 대해 더 명확한 목적을 갖는 것이 훨씬 도움이된다는 것을 알게됩니다.이 경우 두 분기를 병합하는 방식이 중요합니다.

관련 문제