본문 바로가기
부가정보

dev브랜치에 병합전에 통합 브렌치를 만들어서 작업하면 좋은 이점

by momomoo 2024. 6. 23.

원래 데브에 병합하고 받는식으로 작업을 진행했는데 따로 풀리퀘 받는 브랜치를 만들고 충돌해결후 dev에 보내면 좋을까싶어서
찾아보았다.

 

 

 

-gpt-

다른 사람이 제출한 풀 리퀘스트를 통합 브랜치에서 먼저 머지하고, 이를 개발 브랜치에 병합하는 방식은 여러 가지 측면에서 유리합니다. 이 방식의 장점과 그 이유를 설명드리겠습니다.

### 장점

1. **충돌 사전 해결**:
   - 여러 PR을 통합 브랜치에서 먼저 병합하면, 메인 개발 브랜치에 병합하기 전에 발생할 수 있는 충돌을 미리 해결할 수 있습니다. 이는 개발 브랜치가 항상 안정적인 상태를 유지할 수 있도록 합니다.

2. **효율적인 테스트**:
   - 통합 브랜치에서 모든 PR이 병합된 상태로 테스트를 수행할 수 있습니다. 이를 통해 모든 변경 사항이 함께 잘 작동하는지 확인할 수 있습니다. 이렇게 하면 배포 전에 버그를 사전에 발견하고 수정할 수 있습니다.

3. **코드 리뷰 효율성**:
   - 통합 브랜치에 모든 PR을 병합한 후 한 번에 코드 리뷰를 받을 수 있습니다. 이는 코드 리뷰어가 각 PR을 개별적으로 리뷰하는 것보다 시간을 절약할 수 있습니다.

4. **안정적인 배포**:
   - 모든 변경 사항이 통합 브랜치에서 테스트되고 검증된 후 개발 브랜치에 병합되므로, 배포 시 안정성을 확보할 수 있습니다. 이는 배포 후 발생할 수 있는 문제를 최소화하는 데 도움이 됩니다.

### 절차

1. **통합 브랜치 생성**:
   - 통합 브랜치를 만들어 PR을 병합합니다.
   ```sh
   git checkout -b integration-branch
   ```

2. **PR 병합**:
   - 통합 브랜치에 각 PR을 병합합니다.
   ```sh
   git merge feature/PR1
   git merge feature/PR2
   ```

3. **충돌 해결**:
   - 병합 중 충돌이 발생하면 해결합니다.
   ```sh
   git add .
   git commit -m "Resolved conflicts"
   ```

4. **통합 테스트**:
   - 모든 변경 사항을 테스트합니다.
   ```sh
   npm test
   ```

5. **코드 리뷰**:
   - 통합 브랜치에 대한 코드 리뷰를 요청합니다.

6. **개발 브랜치에 병합**:
   - 통합 브랜치를 개발 브랜치에 병합합니다.
   ```sh
   git checkout dev
   git merge integration-branch
   ```

7. **통합 브랜치 삭제**:
   - 작업을 정리합니다.
   ```sh
   git branch -d integration-branch
   ```

### 결론

다른 사람이 제출한 PR을 통합 브랜치에서 먼저 병합하고, 이를 개발 브랜치에 병합하는 방법은 코드베이스의 안정성을 유지하고, 충돌을 사전에 해결하며, 테스트와 코드 리뷰를 효율적으로 수행할 수 있는 좋은 방법입니다. 이러한 절차를 통해 협업이 원활해지고, 배포 시 발생할 수 있는 문제를 최소화할 수 있습니다.

 

 

 

 

 

 

 

 

많이 사용하는 방식인가 찾아봤는데

 

 

-gpt-

PR을 통합 브랜치에서 먼저 병합하고 이를 개발 브랜치에 병합하는 방법은 많은 소프트웨어 개발 팀에서 사용되는 일반적인 접근 방식입니다. 이 방법은 특히 대규모 프로젝트나 여러 개발자가 협업하는 환경에서 유용합니다. 이러한 방식은 "Integration Branch" 또는 "Feature Branch" 모델로 불리며, Git Flow와 같은 워크플로우의 일부로 사용됩니다.

### Git Flow와 통합 브랜치
Git Flow는 분기 전략 중 하나로, 기능 개발과 통합을 체계적으로 관리하기 위해 널리 사용됩니다. Git Flow에서는 다음과 같은 브랜치를 사용합니다:
1. **Feature Branches**: 새로운 기능을 개발하기 위해 사용.
2. **Develop Branch**: 개발 중인 코드의 통합을 위한 브랜치.
3. **Release Branches**: 릴리스 준비를 위해 사용.
4. **Hotfix Branches**: 긴급 수정 사항을 처리하기 위해 사용.
5. **Master Branch**: 배포 가능한 안정적인 코드.

### 통합 브랜치의 활용
통합 브랜치를 사용하여 여러 PR을 병합하고 테스트하는 방식은 Git Flow와 같은 워크플로우와 잘 맞아떨어집니다. 이 방식의 몇 가지 예를 소개합니다:

1. **Git Flow**:
   - Git Flow에서는 기능 개발이 완료되면 feature 브랜치를 develop 브랜치로 병합합니다. 여러 기능이 동시에 개발되는 경우, 이를 먼저 통합 브랜치에서 병합하여 테스트한 후 develop 브랜치로 병합할 수 있습니다.
   
2. **GitHub Flow**:
   - GitHub Flow는 상대적으로 간단한 워크플로우로, 기능 브랜치를 생성하고, 작업이 완료되면 PR을 통해 main 브랜치에 병합합니다. 이 경우에도 통합 브랜치를 사용하여 병합 전 테스트를 수행할 수 있습니다.

### 실무에서의 사용 예
다음은 여러 개발 팀에서 통합 브랜치를 사용하는 예입니다:
1. **대규모 프로젝트**:
   - 대규모 프로젝트에서는 여러 개발자가 동시에 작업하므로, 통합 브랜치를 사용하여 각자의 작업을 병합하고 테스트하는 것이 일반적입니다.
   
2. **지속적 통합(CI) 시스템**:
   - CI 시스템에서는 통합 브랜치에서 각 기능을 병합하고 자동으로 테스트를 수행하여 코드의 품질을 유지합니다.

### 추가 리소스
- [Atlassian Git Flow 설명](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)
- [GitHub Flow 가이드](https://guides.github.com/introduction/flow/)

이러한 전략을 통해 협업과 코드 품질을 효과적으로 관리할 수 있으며, 많은 개발 팀이 이러한 접근 방식을 사용하여 프로젝트를 성공적으로 관리하고 있습니다.

 

 

 

 

 

브랜치 계층 구조

 

프로젝트가 커질수록 다양한 브랜치를 사용하는 것이 일반적입니다. 다음은 이러한 브랜치를 사용하여 작업을 체계적으로 관리하는 방법입니다:

 

1. Feature Branches:

특정 기능이나 버그 수정을 위해 개별 개발자가 작업하는 브랜치입니다.

각 기능은 별도의 브랜치에서 개발되고, 작업이 완료되면 통합 브랜치로 병합됩니다.

2. Integration Branches:

여러 기능 브랜치를 통합하여 테스트하는 브랜치입니다.

각 팀이나 파트별로 통합 브랜치를 만들어 관리할 수 있습니다. 예를 들어, 리뷰 파트, 게시판 파트 등.

통합 브랜치에서 기능들을 모아 테스트하고, 문제가 없는지 확인합니다.

3. Review Branches:

코드 리뷰를 위해 사용하는 브랜치입니다.

통합 브랜치에서 리뷰가 필요한 코드만 추려내어 리뷰 브랜치로 병합하고, 리뷰를 진행합니다.

4. Develop Branch:

모든 통합 브랜치에서 검증된 기능들이 모이는 브랜치입니다.

통합 브랜치에서 테스트와 리뷰가 완료된 코드를 이곳으로 병합합니다.

5. Release Branch:

릴리스 준비를 위해 사용하는 브랜치입니다.

개발 브랜치에서 충분히 안정화된 코드를 릴리스 브랜치로 옮겨 최종 테스트와 준비 작업을 합니다.

6. Master/Main Branch:

실제 배포되는 안정적인 코드를 유지하는 브랜치입니다.

릴리스 브랜치에서 최종적으로 검증된 코드를 이곳으로 병합합니다.