되돌리기 - git tag




Git에서 모범 사례 브랜치 및 병합 (2)

우리는 4 명의 개발자 팀을 보유하고 있으며 최근에 힘내로 옮겼습니다. 분기 및 병합을 통한 워크 플로에 대한 모범 사례를 배우고 자합니다.

Git Flow의 경량 버전을 사용하고 있습니다. 우리는 dev, staging, master 브랜치가 서로 선형 적으로 존재합니다.

  • 스테이징은 마스터에서 분기됩니다.
  • dev는 스테이징에서 분기됩니다.

또한 기능 및 핫픽스 분기를 사용하여 새로운 기능을 수정하고 버그를 수정합니다.

나는 다음과 같은 질문을 가지고있다.

  1. dev 또는 master에서 지형지 물을 분기해야합니까?
  2. 기능 브랜치가 준비되면 기능 브랜치를 dev에 병합하고 dev를 병합하여 스테이징하거나 기능 브랜치를 스테이징으로 병합 한 다음 기능 브랜치를 마스터로 병합해야합니까?

우리가 마스터에서 분기하고 feature 브랜치를 병합해야한다고 생각합니다. dev에 무언가있을 수 있기 때문에 준비와 마스터에 병합하고 싶지 않을 수 있습니다.

당신의 의견 것입니다? 모범 사례는 무엇입니까?


Git Flow가 훌륭한 분기 모델이지만, 여러분이 묻는 질문은 더 큰 문제의 증상입니다. Git Flow는 소비자 웹 제품을 다루는 소규모 팀에게 너무 무거울뿐입니다. (저는 소비자 웹 작업을하고 있다고 가정합니다. 제품, 원자력 발전소 제어실을 코딩하는 경우 무시하십시오.).

매우 간단한 분기 모델을 사용하여 Continuous Deployment (CD)를 고려해 보시기 바랍니다.

요즘 CD를 설치하는 것은 매우 쉽습니다.

  1. Travis , CodeShip , Jenkins 또는 유사한 시스템을 사용하여 코드베이스의 모든 분기에 푸시 된 모든 커밋에 대해 전체 빌드 및 테스트 슈트를 실행하십시오.
  2. Travis / Codeship / Jenkins를 설정하여 테스트를 통과 한 모든 커밋을 프로덕션 환경에 배포하십시오.
  3. 모든 새 기능에 대해 master 에서 새 분기를 만듭니다.
  4. 새 기능을 코딩하고 지점에서 테스트하십시오.
  5. 지형지 물 브랜치를 master 병합하고 라이브로 이동합니다.

거기에 공통적 인 반대 의견이 많이 있는데, 모두 "내가 버그를 소개하면 어떨까요?"라고 요약 할 수 있습니다. 대답은 "고칠거야!"입니다. 테스트를 작성하고, 프로덕션 사이트를 모니터링하고, 코드 검토를 수행하고, 페어 프로그래밍을 연습하고, 기능 플래그를 사용하고, 기능을 작게 유지하면 CD로 얻는 이점이 비정기적인 문제보다 중요합니다 모든 일.

나는 너를 시도하는 것이 좋습니다. 진정으로 중요하게 여기는 것에 집중할 수있는 마음이 생깁니다. 당신이 나를 믿지 않는다면 Github의 훌륭한 프레젠테이션을보십시오 .


우리는 Git Flow 라는 워크 플로우에 착수 했지만 dev에서 기능을 분기하는 대신 현재 릴리스에서 분기합니다. 이것은 우리로 하여금 다른 속도로 별도의 문제를 해결할 수있게합니다. 그들이 QA에서 성공한다면, 그들은 릴리스로 이동합니다.

지점 및 배치에 관해서 :

  • dev 브랜치는 테스트 서버에 자동으로 전개된다.
  • 현재 릴리스 분기는 스테이징 서버에 자동으로 배포됩니다.
  • 마스터 분기는 릴리스 마스터에 의해 실시간 서버에 수동으로 배포됩니다.

워크 플로는 다음과 같습니다.

  1. 각 릴리스 / 스프린트의 시작 부분에 마스터 에서 릴리스 분기를 만듭니다 (예 : release / 2015-may) .
  2. release / 2015-may 에서 dev 브랜치 만들기
  3. 새로운 기능에 대한 작업, 릴리즈에서의 브랜치 그리고 이름 ISSUE_NUMBER / ISSUE_NUMBER .
  4. 귀하의 기능에 대한 작업.
  5. 테스트 준비가되면 dev에 병합하십시오.
  6. 승인 된 경우 현재 릴리스 분기에 병합하십시오.
  7. 수락되지 않으면 4 단계로 이동하십시오.
  8. 릴리스가 준비되면 마스터에 병합하십시오.

배포본이 배포되고 치명적인 버그가 발견 된 후 master (예 : hotfix / ISSUE_NUMBER )에서 핫픽스 분기를 분기하고 master로 다시 병합하고 다시 배포합니다.





git-flow