2013-02-28 4 views
6

저는 개발 브랜치 (development branch)에서 개발을 한 다음, 프로덕션 환경으로 푸시 할 준비가되면 마스터로 병합하기를 좋아합니다. 내가 주된 지부에 무엇인가 투입하지 않는 한 모든 것이 순조롭게 진행됩니다.마스터 브랜치와 개발 브랜치를 성공적으로 동기화하는 방법은 무엇입니까? GIT

그러나 개발 지사에서 변경된 항목과 충돌하는 마스터 지점에 커밋 한 상황이 발생했습니다. 개발 지점을 마스터에 병합 할 때 충돌을 해결해야합니다. 큰 문제는 아니지만 개발 지사가 마스터 브랜치에 모든 것을 가지고 있는지 확인하기 위해 (개발이 최신인지 확인) 마스터 브랜치를 병합하여 충돌을 다시 해결해야합니다.

리포지토리가 일반적으로 좋지 않다고 들었습니다. 특히 공개적으로 푸시하는 항목의 경우에 특히 그렇습니다.

이 유형의 설정을 관리하는 더 좋은 방법이 있습니까?

답변

2

방법은 라운드 다른 방법입니다.

분기를 병합하고 처리 할 때 git이 우수하지만 3-way diff/merge 도구를 사용하는 수동적이고 지루한 작업 외의 다른 문제를 해결하는 데는 빠른 방법이 없다고 생각합니다.

또한 @cHao가 아래 답변에서 말한 것을 수행하는 데 도움이됩니다. 자주 병합하고 작은 병합을 수행하면 큰 충돌 병합 상황이 거의 없습니다.

0

내가 말할 수있는 것부터 개발하면 모든 새로운 것들이 발생합니다. 그래서, 그렇다면, 개발 (feature branch)에서 분기하십시오. 그 지점에서 일해. 다 끝나면 최신 기능이 있는지 확인하기 위해 기능 분기로 병합하면됩니다. 그런 다음 개발 분기를 체크 아웃하고 기능 분기를 해당 분기로 병합합니다. 팀원들이 개발 지점에 기능을 계속 추가하기 때문에 어떤 시점에서 관리자는 okay, we're releasing과 같을 것입니다. 따라서이 시점에서 마스터를 병합하여 개발하게됩니다 (누군가가 마스터에 불량 커밋을 한 경우). 체크 아웃 마스터 및 병합으로 개발하십시오.

아무도 직접 개발하거나 마스터하지 않을 것입니다. 그 둘은 병합되어야합니다. 또한, 당신이 기능을 개발하는 동안과 병합 후에 테스트를 해보길 바랍니다.

까지는 rebase과 관련되어 있습니다. 예, 그들은 지사를 공유 한 후에하지 말라고 말합니다. 그래서이 경우 공유 지점이기 때문에 개발 지점에서 수행하지 않을 것입니다.

  1. 병합 마스터 병합 중에 그

모든 충돌을 해결 한 직후 마스터

  • 병합 dev에 dev에 할 : 나는 그것을 할 것

  • 5

    주기적으로 마스터에서 개발 분기로 병합하고 충돌을 해결하십시오. (규칙적으로 수행하는 경우 충돌은 일반적으로 매우 미미합니다.)

    마스터가 다시 병합 될 때까지는 개발이 전혀 충돌하지 않아야합니다.

    5

    여기 기술적으로 잘못된 것보다 더 많은 영향을 미치는 몇 가지 오해가있을 수 있습니다.

    먼저, 일반적으로 마스터 분기에 직접 커밋하지 않아야합니다.당신이 당신의 상황을 묘사하는 방식에서, 그것이 일어 났는지 아닌지는 잘 모르겠지만, 그렇다면 그것을하지 않으려 고합니다.

    깨끗하게 마스터에 병합 할 수없는 것을 발견하면 마스터 자체에서 문제를 해결하지 마십시오. 대신, 지사 지점에서 문제를 해결해야합니다. 일단 그곳에서 문제를 해결하면 마스터에 깔끔하게 병합 할 수 있습니다.

    rebase가 실행되는 한 원격 저장소로 푸시하기 전까지는 리베이스를 사용하는 것이 좋습니다. 원격 저장소에 뭔가를 밀어 넣었 으면 rebase를 원하지 않습니다. 그러면 다른 누군가의 역사를 엉망으로 만들고 git로는 그 사실을 해결할 수 없습니다. 따라서 rebase를 두려워하지 말고, 언제 사용할지, 사용하지 않을지를 아십시오.

    여기에서 리베이스를 사용할 수있는 한 가지 방법은 (문제의 지점을 원격으로 푸시하지 않았다고 가정 할 때) 문제를 해결하는 데 도움이 될 수있는 기능 브랜치를 완전히 마스터로 병합하고 리베이스하는 것입니다 석사. 이렇게하면 해당 지점에서 문제를 해결해야합니다. 일단 해결되면, 마스터로 합병은 사소한 일이되어야합니다 (그 동안 마스터가 다시 변경되지 않는 한). 그러면 마스터로 완전히 합쳐질 수 있습니다.

    git을 사용할 수있는 자습서가 많이 있으며 멋진 코드 예제도 있습니다. 여기에 '고전적인'것 중 하나가 있습니다. 여기서 설명한 워크 플로가 잘 작동한다고 생각합니다. http://nvie.com/posts/a-successful-git-branching-model/

    I가 시도 '자식 흐름'이라는 bash는 스크립트 세트를 승인하고 있지 않다 유의하시기 바랍니다이 워크 플로우 (우리가 그들을 시도 할 때 이러한 스크립트가 우리를 위해 아주 잘 작동하지 않았다)하지만, 워크 플로우 자체를 세미 - 자동화 거기에서 설명한 것은 잘 작동한다.

    0

    내가

    git checkout master 
    git reset --hard dev 
    

    않도록 마스터가 정확히 DEV된다. 마스터에 핫픽스를 제출하려면 dev rebase하는 것을 잊지 마라.

    관련 문제