Git 이슈 브랜치 전략 : PR까지의 과정

coldrice99·2024년 10월 24일
0


🔄 Git 이슈 브랜치 전략과 PR까지의 과정

이번 글에서는 Git 협업에서 이슈 브랜치 전략을 사용해 PR과 병합을 진행하는 과정을 상세히 설명해보겠습니다. 각 단계마다 협업에 유리한 팁도 함께 소개합니다.


1. 이슈 생성 및 브랜치 생성

작업 시작 전, 협업 도구에서 이슈를 생성합니다. 이슈에 기능 구현에 필요한 설명을 추가하여 팀원과 공유합니다. 그런 다음 로컬 메인 브랜치를 업데이트하고 이슈 브랜치를 생성합니다.

git checkout main
git pull origin main
git checkout -b issue/이슈번호

이렇게 하면 최신 코드 기반에서 안전하게 작업할 수 있습니다.

💡 : 브랜치 이름에 이슈 번호와 간략한 설명을 포함하면 다른 팀원들이 브랜치의 용도를 쉽게 이해할 수 있습니다. 예: issue/1-login-feature.


2. 기능 구현 및 커밋

이슈 브랜치에서 기능을 구현하고, 작은 단위로 자주 커밋합니다. 커밋 메시지에는 Ref #이슈번호 형식을 사용하여 작업을 이슈와 연결합니다.

git add .
git commit -m "Ref #1: 기능 추가"

Ref #1과 같은 형식을 사용하면, 해당 커밋이 특정 이슈와 관련이 있음을 명확하게 나타내며, GitHub와 같은 협업 도구에서 이슈와 커밋을 자동으로 연결해 줍니다. 이를 통해 팀원들이 각 커밋이 어떤 이슈와 관련된 작업인지 쉽게 파악할 수 있습니다.

💡 : 기능 구현 중 테스트가 완료된 부분이나 중요한 변경 사항은 더 자주 커밋하여, 나중에 디버깅하거나 변경사항을 추적할 때 용이하게 만드세요.


3. 리베이스로 최신 상태 유지

작업 중 다른 팀원의 작업이 메인 브랜치에 반영될 수 있습니다. 이를 최신 상태로 유지하기 위해 작업 중인 이슈 브랜치에서 직접 리베이스를 수행합니다.

git fetch origin
git rebase origin/main

과거에는 무조건 메인 브랜치로 먼저 체크아웃하고 최신 메인을 pull 한 뒤, 다시 이슈 브랜치로 돌아와 리베이스를 했었습니다. 하지만 이렇게 하면 불필요한 단계가 추가되어 비효율적이었죠. 위와 같이 이슈 브랜치에서 직접 최신 메인 브랜치를 리베이스하면 더 간편하고 효율적입니다.

리베이스는 코드 충돌을 줄이고 깔끔한 커밋 히스토리를 유지하는 데 도움이 됩니다. 충돌이 발생할 경우 파일을 수정하고 git add를 사용한 뒤 git rebase --continue로 리베이스를 이어갑니다.

💡 : 리베이스 후 충돌을 해결할 때는, 충돌 지점에 대한 내용을 자세히 파악한 뒤, 팀원과 협력하여 해결하는 것이 좋습니다. 특히 여러 명이 동시에 작업하는 경우, 명확한 커뮤니케이션이 필수입니다.


4. 원격 저장소로 푸시 및 PR 생성

작업이 완료되면 이슈 브랜치를 원격 저장소로 푸시하고 GitHub에서 PR(Pull Request)을 생성합니다.

git push origin issue/이슈번호

PR 생성 시 리뷰어를 지정하고 이슈 번호를 언급하여 작업 내용을 명확히 합니다. PR을 통해 팀원의 코드 리뷰를 받고 수정 요청을 반영합니다.

💡 : PR 제목과 설명에는 변경된 내용과 목적을 간결하게 작성하세요. 리뷰어가 쉽게 이해할 수 있도록 변경사항을 시각적으로 잘 나타내는 GIF나 스크린샷을 추가하면 좋습니다.


5. 최신 메인으로 리베이스 후 PR 진행

PR을 요청하기 전에, 반드시 최신 메인 브랜치로 리베이스합니다. 최신 메인과의 충돌을 미리 해결함으로써 병합 시 발생할 수 있는 문제를 줄일 수 있습니다. 리베이스 후에는 강제로 이슈 브랜치를 푸시합니다.

git fetch origin
git rebase origin/main
git push origin issue/이슈번호 --force

💡 : 리베이스 후 --force로 푸시할 때는 조심스럽게 진행해야 합니다. 강제 푸시가 팀원들의 작업에 영향을 줄 수 있으므로, 리베이스 시점을 팀원들과 상의하는 것이 좋습니다.


6. 코드 리뷰 및 병합

팀원의 코드 리뷰가 완료되면 메인 브랜치에 병합합니다. 병합 후에는 이슈를 닫고, 로컬 메인 브랜치를 최신 상태로 업데이트합니다.

git checkout main
git pull origin main

다음 기능을 구현할 준비가 끝났습니다.

💡 : 병합 후에는 로컬 브랜치에서 해당 이슈 브랜치를 삭제하여 혼란을 줄이세요. git branch -d issue/이슈번호를 사용하면 됩니다.


맺음말

Git을 이용한 협업에서 이슈 브랜치 전략과 리베이스는 매우 중요합니다. 각각의 기능을 독립적으로 관리하고, 리베이스를 통해 깔끔한 히스토리를 유지하면 협업의 효율성을 높일 수 있습니다. 과거의 비효율적인 작업 방식에서 벗어나, 최신 리베이스 방법을 적용한 경험을 통해 더욱 간편하게 협업할 수 있었습니다. 깔끔한 히스토리는 코드 리뷰에도 큰 도움이 됩니다.

profile
서두르지 않으나 쉬지 않고

0개의 댓글